在 ASP.NET MVC 4 应用程序中,我们设置了一个包罗万象的路由,如下所示:
routes.MapRoute(
name: "UnKnown",
url: "{*url}",
defaults: new { controller = "CatchAll", action = "UnknownUrl" });
CatchAllController 中的 UnknownUrl 方法在我们的开发环境中正确加载了它的 View 。
但是,生产 IIS 7.5 显示其 如果远程请求不存在,则标准 404 页面 到达。 A 本地请求 ,在服务器本身上使用 RDP 发送,工作正常 .
web.config 设置为 tp
<customErrors mode="Off"/>
本地调用和远程调用之间还有什么其他区别? 我们如何让 MVC HttpHandler 捕获这些请求?
A 提示 可能是我们也无法让 IIS 在远程调用时显示任何详细的状态 500 错误消息。
最佳答案
我遇到了 IIS 显示默认错误而不是 .NET 错误的问题,我已在 system.webServer
中使用以下内容修复了该问题。在 web.config 中:
<httpErrors existingResponse="PassThrough"/>
我认为如果在您的
UnknownUrl
中会发生这种情况您正在设置的操作 Response.StatusCode = 404;
.默认情况下,IIS 会看到您正在返回错误代码,因此会显示一条默认错误消息,您可以使用该配置设置覆盖该消息。我不确定这在本地 v 远程上会有所不同,但值得一试。
关于asp.net-mvc - ASP.NET MVC 4 Catch-all 只在本地触发,而不是远程请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16185528/