一般对于asp.net的网站,都通过配置webconfig的customErrors一节来自定义错误页。
<customErrors mode="RemoteOnly" defaultRedirect="~/error.html">
</customErrors>
但是在网站中访问不存在的html页面或其他非aspx文件,不会乖乖的跳转到设定好的错误页去,而是显示默认的错误页面。
在网上搜索了一下:
之所以aspx有用,而html没用
是因为iis里的配置里设定了*.aspx,*.config等文件由aspnet_isapi.dll来处理
而html默认是不处理,直接发送给客户端
如果你希望html也由aspnet_isapi.dll处理,可以去设置
但是这样,html的响应速度也会变慢,因为每个html都要多一道处理手续
很多网站用生成静态页,就是为了防止aspx的多的手续
设置方法:
进入管理工具里的“Internet 信息服务(IIS)管理器”,在网站上按右键=》属性=》主目录=》配置=》点击映射里的添加,
可执行文件输入:c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll
扩展名输入:.html,然后确定即可。
可以看出这种方式并不好,而且我在iis7中也没找到在哪更改。
再来看下iis7中网站的功能视图,可以看到有两个错误页的设置,一个是net错误页,一个是iis下面的错误页。
解决方法就是修改iis下面的错误页
双击“错误页”,以修改404错误页面为例
要是需要修改错误页显示的模式(和customErrors里面的mode概念相同),可以在这里修改