我遇到了一个奇怪的问题,即返回 400 状态代码和 json 错误。
在我的 Controller 中,我有类似的东西:
if(!ModelState.IsValid)
{
string[] errors = ModelState.Values
.SelectMany(x => x.Errors)
.Select(x => x.ErrorMessage).ToArray<string>();
Response.StatusCode = (int)System.Net.HttpStatusCode.BadRequest;
return Json(new { success = false, errors = errors }, JsonRequestBehavior.DenyGet);
}
这在我的开发机器上运行良好。我可以在 ajax 错误方法中得到错误。但是当我部署到服务器时,服务器不再返回 JSON。我总是得到 responseText 而不是 reponseJSON。如果我删除 Response.StatusCode 它工作正常。
这让我相信当我设置 Response 对象的 StatusCode 属性时函数“返回”。这有发生在其他人身上吗?有人知道解决方案吗?
最佳答案
我终于明白问题出在哪里了。将此张贴在这里作为对其他可能对此感到不安的人的回答。
设置以下内容:
Response.TrySkipIisCustomErrors = true;
确保在设置状态代码之前设置此项。我还弄清楚了为什么它在我的本地机器上工作而不是在测试/uat 服务器上工作。在我的 web.config
中,CustomErrors
被设置为 Off 而在服务器上它被设置为 On。
服务器一看到 BadRequest
状态代码被写入 Response
就“返回”。
关于c# - 服务器未返回状态代码为 400 的 JSON (.net),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37313441/