我有一个ASP.NET MVC应用程序,它返回404,偶尔会在各种适当的点返回500个状态代码.
Response.StatusCode = (int)HttpStatusCode.NotFound;
Run Code Online (Sandbox Code Playgroud)
当我设置其中一个状态代码时,我还适当地设置了TrySkipIisCustomErrors属性.
Response.TrySkipIisCustomErrors = true
Run Code Online (Sandbox Code Playgroud)
我现在要做的是,配置IIS来传递这些我自己设置的错误,并捕获可能发生的任何其他错误(例如静态文件上的404,我没有向ASP.NET发送请求,我的应用程序中有500个错误或未被捕获的错误(可能是框架没有设置TrySkipIisCustomErrors属性).
我的system.webServer/httpErrors节点如下所示:
<httpErrors existingResponse="Auto" errorMode="Custom">
</httpErrors>
Run Code Online (Sandbox Code Playgroud)
这将返回我自己的ASP.NET错误,其中我设置了TrySkipIisCustomErrors = true,以及未捕获的500s,静态文件404等的标准IIS错误页面.
然后我尝试像这样修改它:
<httpErrors existingResponse="Auto" errorMode="Custom" defaultPath="/Skins/Shared/Error/Error.html" defaultResponseMode="ExecuteURL">
<clear />
</httpErrors>
Run Code Online (Sandbox Code Playgroud)
我相信这应该显示我的自定义错误页面,而不是标准的IIS页面.但是,当我添加此代码时,我得到一行IIS错误("由于发生了内部服务器错误,因此无法显示页面.")并返回500状态代码.
我认为这是由于我的配置错误,但我不能为我的生活了解我做错了什么!
我也试过这种方法,结果相同:
<httpErrors existingResponse="Auto" errorMode="Custom" defaultPath="Skins\Shared\Error\Error.html" defaultResponseMode="File">
<clear />
</httpErrors>
Run Code Online (Sandbox Code Playgroud)
即使将重定向设置为完全不同的URL也会产生同样的问题.
我一直在使用此页面作为参考:http://blogs.iis.net/ksingla/archive/2008/02/18/what-to-expect-from-iis7-custom-error-module.aspx.
错误文件肯定存在,我可以使用浏览器直接命中它.
顺便说一句,我不完全确定我应该使用system.Web\customErrors节点做什么.这是一个仅限IIS6的设置,还是以某种方式与ASP.NET相关?目前我没有将它包含在我的web.config中.
将其添加到您的 system.webserver 节点。它会告诉 IIS 让 ASP.Net 处理错误。
<httpErrors existingResponse="PassThrough" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2304 次 |
| 最近记录: |