先说明,我的系统win7旗舰版,iis版本是7.5,.net framework 版本是4.0。
最近发布了一个网站,在配置文件里写了一个customErrors的配直节。就是自定义错误页面的那个。代码如下:
<system.web> <customErrors mode="On" defaultRedirect="~/error.htm"> <error statusCode="403" redirect="~/403.htm"/> <error statusCode="404" redirect="~/404.htm"/> </customErrors> </system.web>
因为自定义的错误页面都是在根目录下,所以直接写了。而且为了测试此方法能不能用,我将mode设置为On,即始终显示自定义错误。此处截取配置文件中的一段。此方法很常用,貌似也只有这一种方法能在出现404等错误时跳转到自定义的错误页。
可是问题就出在这了。我在vs2010调试环境下这是完全没有问题的,成功显示了我的自定义错误页面。但将网站发布到iis上之后(使用局域网,无域名,有IP),同事的电脑访问网站再输入一个不存在的路径,还是会报HTTP 404错误,而不是显示我的自定义错误页。
我在网上找过,说什么在iis7.0之前这种写法是有效的,之后就不行了,郁闷啊。这是网上找的在iis7.5下的写法
<system.webServer> <httpErrors> <remove statusCode="403"/> <remove statusCode="404"/> <error statusCode="403" path="403.htm"/> <error statusCode="404" path="404.htm"/> </httpErrors> </system.webServer>
按照他们给的解决方案,在我这里是没有效果的。具体该怎么写啊?求遇到过同样问题的大神教
打开 Internet 信息服务(IIS)管理器,选中你的网站或应用程序,在“功能视图”中找到“错误页”,双击,找到 404:
单击“编辑”,设置你的自定义 404 错误页面;
单击“编辑功能设置”,选择“自定义错误页”,并设置你的自定义错误页面;
单击编辑的时候有个响应操作区域,有三个选项,是选第二个(在此网站上执行URL)吗?我感觉不会是第一个(将静态文件中的内容插入错误响应中)和第三个(以302重定向响应)
@陈悕: 第一个或第二个,你看它写的示例的地址的后缀名。
@Launcher: iis默认的是第一个,那种只能显示http错误,我选择第二个的时候,它只能对.aspx后缀的错误地址起作用。比如我在地址栏输入一个不存在的123.htm,还是会出http错误,而如果我输入123.aspx就会显示自定义错误页,或者我用a标签实现下载,当下载的资源不存在时,也会报http错误,这是什么情况呢?
@陈悕: “功能视图”中还有个“.NET 错误页”。
出现这种问题也有可能是服务器安装的是win 2003操作系统,IIS版本太低对web.config支持的不够。
看清楚我的问题描述再回答好吗?