NancyFX 从 Response.AsJson 返回 text/html
NancyFX returning text/html from Response.AsJson
我在 api 中使用 NancyFx:v2.0-clinteastwood,Asp.net 托管(本地:IIS Express,远程:Aure Web App)。
我正在使用 Nancy.Validation.FluentValidation
(v2.0-clinteastwood) 并将 JSON object 发布到 POST 端点。我故意向它发送一个未满足我的验证要求的 object。
执行验证和 return 结果(如果失败)的代码看起来有点像这样。
var validationResult = this.Validate(POCO object i bind, data here is as expected);
if (!validationResult.IsValid)
{
return Response.AsJson(validationResult).WithStatusCode(HttpStatusCode.BadRequest);
}
当我在本地 运行 时,响应 returned 的内容类型为:application/json
并包含验证失败 body 作为 Json(预期)。
当我远程 运行 时,响应 returned 的内容类型为:text/html
并且 NOT 包含验证失败 body.
我已经在每一行代码中设置了日志记录,并确保没有自定义管道方法正在更改输出。我还尝试将 return 编辑为:
return Response.AsJson(validationResult).WithStatusCode(HttpStatusCode.BadRequest).WithContentType("application/json");
然而 text/html
仍然是 returned。
我在 fiddler 中复制了这个并剥离了所有其他 header。基本请求如下所示:
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 header 已正确配置。
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) 托管版本时发生。任何人都可以解释这个重物或建议我应该调查的其他事情吗?
归功于 Nancy Slack 房间。您需要确保您的 web.config 包含以下内容以允许 Nancy 通过。
<system.webServer>
<httpErrors existingResponse="PassThrough"/>
</system.webServer>
更多,具体详情可以上NancyFx Wiki - Custom Errors on Asp.Net
我在 api 中使用 NancyFx:v2.0-clinteastwood,Asp.net 托管(本地:IIS Express,远程:Aure Web App)。
我正在使用 Nancy.Validation.FluentValidation
(v2.0-clinteastwood) 并将 JSON object 发布到 POST 端点。我故意向它发送一个未满足我的验证要求的 object。
执行验证和 return 结果(如果失败)的代码看起来有点像这样。
var validationResult = this.Validate(POCO object i bind, data here is as expected);
if (!validationResult.IsValid)
{
return Response.AsJson(validationResult).WithStatusCode(HttpStatusCode.BadRequest);
}
当我在本地 运行 时,响应 returned 的内容类型为:application/json
并包含验证失败 body 作为 Json(预期)。
当我远程 运行 时,响应 returned 的内容类型为:text/html
并且 NOT 包含验证失败 body.
我已经在每一行代码中设置了日志记录,并确保没有自定义管道方法正在更改输出。我还尝试将 return 编辑为:
return Response.AsJson(validationResult).WithStatusCode(HttpStatusCode.BadRequest).WithContentType("application/json");
然而 text/html
仍然是 returned。
我在 fiddler 中复制了这个并剥离了所有其他 header。基本请求如下所示:
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 header 已正确配置。
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) 托管版本时发生。任何人都可以解释这个重物或建议我应该调查的其他事情吗?
归功于 Nancy Slack 房间。您需要确保您的 web.config 包含以下内容以允许 Nancy 通过。
<system.webServer>
<httpErrors existingResponse="PassThrough"/>
</system.webServer>
更多,具体详情可以上NancyFx Wiki - Custom Errors on Asp.Net