美好的一天!
我使用策略来处理404错误,如下所示:Error handling for ASP.NET MVC 2 and IIS 7.0或者:How can I properly handle 404 in ASP.NET MVC?
简而言之:我在 Global.asax
处理404作为异常而不添加任何路由规则,如果异常是404我将使用错误消息呈现特殊控制器\动作 .
在IIS6上,它适用于ASP.NET通配符映射 . 在集成模式的IIS7上,我需要将以下内容添加到 Web.config
(其中 /error/HttpError404
是我的动作,404页面):
<httpErrors>
<remove statusCode="403" subStatusCode="-1" />
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/error/HttpError404" responseMode="ExecuteURL" />
<error statusCode="403" prefixLanguageFilePath="" path="/error/HttpError403" responseMode="ExecuteURL" />
</httpErrors>
为什么?路由在IIS集成模式和IIS6通配符映射上的工作方式不同?
提前致谢!
UPDATE: 根据我的测试,似乎我的错误处理工作,我的404操作呈现,但似乎IIS看到404响应代码(我在404操作中以编程方式设置)并用默认错误替换我的页面 .
当我设置 <httpErrors>
时,我获得了404页面的两个点击:一个来自 Global.asax
中的异常处理,另一个来自IIS .
这可能是原因吗?
1 回答
我似乎已通过设置
Web.config
修复了它: