2016-06-20 2 views
0

Использование Web API V2, размещенного как Azure Web App с CloudFlare, включенным в ReasonPhrase (a.k.a StatusText, ResponseText), не возвращается клиенту.CloudFlare изменяет WebApi удобное для пользователя ResponseText/StatusCode/ReasonPhrase с сервера Web API V2

ReasonPhrase устанавливается в ExceptionFilterAttribute так:

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

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

Это работает локально, а когда CloudFlare обходится. Но не тогда, когда CloudFlare активен.

Почему CloudFlare запрещает это, и как его можно отключить или должны быть обработаны дружественные API сообщения об ошибках по-разному?

ответ

0

Перемещая удобное сообщение об ошибке в тело запроса, вместо reasonPhrase, я смог обойти эту проблему. Предположительно CloudFlare или Azure не нравится более длинный метод ReasonPhrase ...

Новый OnException:

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

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