NancyFX从Response.AsJson返回text / html

时间:2018-01-30 18:29:00

标签: asp.net json azure nancy fluentvalidation

我在我的api中使用NancyFx:v2.0-clinteastwood,Asp.net Hosted(本地: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)托管版本时才会发生这种情况。任何人都可以解释这个重量或建议我应该调查的其他事情吗?

1 个答案:

答案 0 :(得分:1)

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

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

更多信息,请参阅NancyFx Wiki - Custom Errors on Asp.Net

相关问题