0

Notre problème est le suivant: nous utilisons le ProtoBufFormatter dans notre API Web.Web API - ProtoBufFormatter - return serializable 401 avec l'attribut Authorize personnalisé

config.Formatters.Add(new ProtoBufFormatter()); 

utilisant également notre coutume Autorisez attribut. Le problème est que notre API Web revient 401. Ce qui se traduit par lancer Protobuf et exception, car il ne peut pas sérialiser la réponse, il jette une exception près:

Pas sérialiseur défini pour le type: System.Object

Quand je en commentaire:

protected override void HandleUnauthorizedRequest(HttpActionContext actionContext) 
     { 
      // base.HandleUnauthorizedRequest(actionContext); 
     } 

le serveur cesse de jeter l'exception comme cela, il empêche d'envoyer la réponse 401. Mais je ne suis pas sûr de savoir comment traiter le mieux ce problème.

Dois-je alors, dans mes actions de contrôleur, renvoyer une réponse protobuf sérialisable contenant cet utilisateur non autorisé?

Répondre

0

Résolu en retournant notre contenu sérialisable dans la réponse de la manière suivante:

protected override void HandleUnauthorizedRequest(HttpActionContext actionContext) 
     { 
      actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized, 
       new ApiResponse(false, ApiErrorMessages.Unauthorized, ErrorType.Unauthorized)); 
     }