使用Web API V2,作为Azure Web App托管,CloudFlare打开,ReasonPhrase(a.k.a StatusText,ResponseText)不会返回给客户端 .
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错误消息?
1 回答
通过将用户友好的错误消息移动到请求的主体,而不是reasonPhrase,我能够解决此问题 . 据推测,CloudFlare或Azure不喜欢更长的ReasonPhrase ...
新的OnException方法: