【发布时间】:2016-02-09 21:54:10
【问题描述】:
我在 ASP.NET-MVC5 框架中编写了一个简单的 Web 服务。我面临的问题是自定义状态代码和响应消息。
我已经尝试了很多在这里找到答案,但是我在这里找到的解决方案对我不起作用。
我使用标准的 try/catch 方法来处理我的错误。当 catch 块收到错误时,它会使用自定义错误代码和 JSON 文件向客户端发送响应,其中包含有关错误/异常的一些附加信息。
当我在 IIS express 上运行我的应用程序时,当我从同一台服务器发送请求时它工作正常。当我在开发环境的 IIS 7.5 和生产环境的 IIS 8.5 上运行应用程序时,也会出现同样的情况。但是当客户端尝试向我的应用程序发送请求时会出现问题,并且如果应用程序代码中出现错误,客户端只会收到带有 400 状态代码的默认错误页面。
我尝试将CustomError 设置为不同的模式,还尝试了与HttpErrors 节点等的不同组合。
对我不起作用。如果 CustomError 模式设置为 ON 它完全停止了对我的工作 - 即使对于本地请求也是如此。
这就是我向客户发送响应的方式:
试试
{ } 抓住 () {
Response.StatusCode = 406;
StringBuilder 错误消息 = new StringBuilder();
//这里我生成json文件和响应一起发送
字符串异常 = errorMessage.ToString();
return Json(异常,JsonRequestBehavior.AllowGet);
}
有没有什么方法可以为不使用自定义错误页面并重定向到它们的客户端应用程序提供可见的响应消息?
附:在 SO 我发现了很多类似的问题,但我的问题没有直接的答案。我的问题和我在这里找到的问题之间的主要区别是自定义错误页面。但对我来说,只要在出现错误/异常的情况下发送 json 响应并使其在客户端的响应内容中可见就足够了。
【问题讨论】:
-
您是说,当执行过程中没有错误时,客户端正在按预期获得 JSON 响应?或者,客户端总是收到 400 - Bad Request 错误。因为在那种情况下,它与CORS有关
-
@CORS – Oguz Ozgul 不,我不是这个意思。我发送了错误的申请请求,并想测试我的错误处理。例如,有一个属性 IsActive 可以接受 0 或 1 值。如果客户端向该属性发送另一个值(例如 4),我会发送一个响应,其中包含自定义状态代码和该值错误的消息。但是当我从安装此 api 的服务器向我的应用程序发送请求时,会显示此消息,但是当任何其他客户端应用程序向同一服务器发送请求时,它只会收到标准错误请求而没有任何消息。
-
可以在设置响应状态码和内容的地方添加代码块吗?
-
我想我找到了..Look here.您应该将其设置为“始终”
-
@Oguz Ozgul 我添加了代码块以向客户发送响应。
标签: c# asp.net-mvc-5