2016-06-20 8 views
0

Mit Web API V2, gehostet als eine Azure Web App mit CloudFlare eingeschaltet die ReasonPhrase (a.k.a StatusText, ResponseText) wird nicht an den Client zurückgegeben.CloudFlare ändert WebApi benutzerfreundlich ResponseText/StatusCode/ReasonPhrase von Web API V2 Server

Die ReasonPhrase in einem ExceptionFilterAttribute wie folgt festgelegt:

public override void OnException(HttpActionExecutedContext context) 
{ 
     //...code removed for brevity 

     var ex = context.Exception; 
     context.Response = new HttpResponseMessage(ex.StatusCode) 
     { 
      ReasonPhrase = GetUserFriendlyMessage(ex), 
     }; 
} 

Diese lokal funktioniert, und wenn CloudFlare umgangen wird. Aber nicht wenn CloudFlare aktiv ist.

Warum sollte CloudFlare dies ausmerzen und wie kann es deaktiviert werden oder sollten benutzerfreundliche API-Fehlermeldungen anders gehandhabt werden?

Antwort

0

Durch Verschieben der benutzerfreundlichen Fehlermeldung in den Hauptteil der Anfrage, konnte ich dieses Problem umgehen. Vermutlich CloudFlare oder Azure nicht wie eine längere ReasonPhrase ...

New OnException Methode:

public override void OnException(HttpActionExecutedContext context) 
{ 
    //...code removed for brevity 

    var ex = context.Exception; 
    context.Response = request.CreateResponse(ex.StatusCode, new 
    { 
     message = friendlyMessage, 
    }); 
}