CloudFlare从Web API V2服务器更改WebApi用户友好的ResponseText / StatusCode / ReasonPhrase

时间:2016-06-20 09:15:24

标签: azure asp.net-web-api cloudflare

使用Web API V2,托管为CloudFlare的Azure Web App,并且不会将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 个答案:

答案 0 :(得分: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,
    });
}