将ASP.NET MVC自定义错误页面真的那么简单吗?
- 内容介绍
- 文章标签
- 相关推荐
本文共计690个文字,预计阅读时间需要3分钟。
如果在使用asp.net+mvc自定义错误页面时遇到问题,不要慌张。你的做法通常是正确的,没有起作用的可能原因是多方面的。一部分错误是由asp.net管理器处理引起的,另一部分则可能是由IIS直接处理引起的。
如果你在设置asp.net mvc自定义错误页面时遇到问题,这并不止你一个人。惊讶之余你的做法是正确的,没有起到作用的原因是其一部分错误是由asp.net管道处理的,另一部分是由iis直接处理。
通常情况 (我期望是这种情况,在一些其他框架/服务器上) 我们只需要在一个地方配置自定义错误页就可以了,无论怎么哪儿引发的错误。就像这样︰
<customErrors mode="On"> <error code="404" path="404.html" /> <error code="500" path="500.html" /> </customErrors>
自定义404错误页面
当一个资源不存在时(包含静态和动态),我们需要返回一个404状态的页面,通常我们需要提供一些稍微友好的信息替代asp.net/iis生成的默认错误页呈现给我们的网站访问者,可能是提出一些忠告 为什么该资源可能不存在或提供选择要搜索的网站。
这里仅作演示简单设置如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"/> <title>404 Page Not Found</title> </head> <body> <h1>404 Page Not Found</h1> </body> </html>
我创建了一个新的ASP.NET MVC 5应用程序,包含vs自带的标准模版。如果我运行它尝试导航到一个不存在的路径 e.g. /foo/bar,就会得到一个包含如下信息的标准 ASP.NET 404 页面:、
不太友好不是?
这种情况的错误是由ASP.NET MVC引发因为它没有找到与url相匹配的controller或action。
为了自定义404错误页面,在web.config 的 <system.web></system.web>配置节:
<customErrors mode="On"> <error statusCode="404" redirect="~/404.html"/> </customErrors>
mode="On" 这样我们就能在本地看到错误页面。一般你可能只想在投入使用时呈现而设置为 mode="RemoteOnly"。
现在如果我再次导航到/foo/bar 就能看到我刚刚定义的错误页面.
然而正如我所料,此时的url路径并不是 /foo/bar ASP.NET 将其重定向为/404.html?aspxerrorpath=/foo/bar,而且我检查响应的HTTP状态码也为正常状态的200。
这是非常糟糕的,返回benfoster.io/blog/aspnet-mvc-custom-error-pages
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。
本文共计690个文字,预计阅读时间需要3分钟。
如果在使用asp.net+mvc自定义错误页面时遇到问题,不要慌张。你的做法通常是正确的,没有起作用的可能原因是多方面的。一部分错误是由asp.net管理器处理引起的,另一部分则可能是由IIS直接处理引起的。
如果你在设置asp.net mvc自定义错误页面时遇到问题,这并不止你一个人。惊讶之余你的做法是正确的,没有起到作用的原因是其一部分错误是由asp.net管道处理的,另一部分是由iis直接处理。
通常情况 (我期望是这种情况,在一些其他框架/服务器上) 我们只需要在一个地方配置自定义错误页就可以了,无论怎么哪儿引发的错误。就像这样︰
<customErrors mode="On"> <error code="404" path="404.html" /> <error code="500" path="500.html" /> </customErrors>
自定义404错误页面
当一个资源不存在时(包含静态和动态),我们需要返回一个404状态的页面,通常我们需要提供一些稍微友好的信息替代asp.net/iis生成的默认错误页呈现给我们的网站访问者,可能是提出一些忠告 为什么该资源可能不存在或提供选择要搜索的网站。
这里仅作演示简单设置如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"/> <title>404 Page Not Found</title> </head> <body> <h1>404 Page Not Found</h1> </body> </html>
我创建了一个新的ASP.NET MVC 5应用程序,包含vs自带的标准模版。如果我运行它尝试导航到一个不存在的路径 e.g. /foo/bar,就会得到一个包含如下信息的标准 ASP.NET 404 页面:、
不太友好不是?
这种情况的错误是由ASP.NET MVC引发因为它没有找到与url相匹配的controller或action。
为了自定义404错误页面,在web.config 的 <system.web></system.web>配置节:
<customErrors mode="On"> <error statusCode="404" redirect="~/404.html"/> </customErrors>
mode="On" 这样我们就能在本地看到错误页面。一般你可能只想在投入使用时呈现而设置为 mode="RemoteOnly"。
现在如果我再次导航到/foo/bar 就能看到我刚刚定义的错误页面.
然而正如我所料,此时的url路径并不是 /foo/bar ASP.NET 将其重定向为/404.html?aspxerrorpath=/foo/bar,而且我检查响应的HTTP状态码也为正常状态的200。
这是非常糟糕的,返回benfoster.io/blog/aspnet-mvc-custom-error-pages
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

