【发布时间】: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