【问题标题】:NancyFX returning text/html from Response.AsJsonNancyFX 从 Response.AsJson 返回文本/html
【发布时间】:2018-01-31 05:23:38
【问题描述】:

我在我的 api 中使用 NancyFx:v2.0-clinteastwood,托管 Asp.net(本地:IIS Express,远程:Aure Web App)。

我正在使用 Nancy.Validation.FluentValidation (v2.0-clinteastwood) 并将 JSON 对象发布到 POST 端点。我故意向它发送一个不符合我的验证要求的对象。

执行验证并返回结果(如果失败)的代码看起来有点像这样。

 var validationResult = this.Validate(POCO object i bind, data here is as expected);
 if (!validationResult.IsValid)
 {
      return Response.AsJson(validationResult).WithStatusCode(HttpStatusCode.BadRequest);
 }

当我在本地运行它时,返回的响应是内容类型:application/json,并包含验证失败正文为 Json (EXPECTED)。

当我远程运行它时,返回的响应是内容类型:text/html 并且 NOT 是否包含验证失败正文。

我在每一行代码中都设置了日志记录,并确保没有自定义管道方法会更改输出。我也尝试将返回编辑为:

return Response.AsJson(validationResult).WithStatusCode(HttpStatusCode.BadRequest).WithContentType("application/json");

然而text/html 仍然返回。

我在提琴手中复制了这个并剥离了所有其他标题。基本请求如下所示:

POST https://justatestdomain.com/endpoint HTTP/1.1
Content-Type: application/json
Accept: application/json
Host: justatestdomain.com
Content-Length: x

{"property1":"value 1","property2":"value2"}

我还可以确认我的 CORS 标头已正确配置。

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: Accept, Origin, Content-Type, Authorization, x-ms-request-id, x-ms-request-root-id

仅在针对远程 (Azure) 托管版本时才会发生这种情况。谁能解释我应该调查的其他事情或建议?

【问题讨论】:

    标签: asp.net json azure nancy fluentvalidation


    【解决方案1】:

    归功于 Nancy Slack 房间。您需要确保您的 web.config 包含以下内容以允许 Nancy 通过。

    <system.webServer>
         <httpErrors existingResponse="PassThrough"/>
    </system.webServer>
    

    更多,具体细节可以在NancyFx Wiki - Custom Errors on Asp.Net找到

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-21
      • 2013-11-30
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      相关资源
      最近更新 更多