IIS7.5上的编码平台ASP.NET 4.0 WebForms
如果我请求不存在的页面blahblah.aspx
,我会导航到我的自定义错误页面,找不到页面异常。我已经实现了URL路由,所以我省略了所有路由的.aspx扩展名。
现在,如果我键入 www.mysite.com/blahblah
(这是一个没有扩展名的网址)而不是转到我的自定义错误页面,它会被重定向到我的IIS 404错误页面。
如何使我的自定义错误页面显示在我的网站上而不是IIS错误页面上?
答案 0 :(得分:31)
如果您的IIS 7 Web服务器还没有,请安装Microsoft的IIS 7.0 Administration Pack。
导航到IIS中的根Web服务器名称,然后打开Configuration Editor
(管理包的一部分)。将下拉列表更改为system.webServer/httpErrors
,右键点击defaultPath
,然后选择'defaultPath' Attribute -> Unlock Attribute
。
然后尝试再次更改自定义错误处理程序页面。导航到您的站点,在IIS组下打开Error Pages
,单击右侧的Edit Feature Settings
,选择Custom error pages
,最后输入默认页面的路径。
这次没有锁定错误。
我最初尝试在网站级别解锁此属性但被阻止,因此请注意,您可能必须一直到IIS树的根目录,即Web服务器本身。
我知道您可以通过在Web服务器上的相应配置文件的记事本中直接编辑来完成所有这些。这可能是您的特定Web托管环境或公司生产Web服务器更改协议所必需的。但是,如果它不需要,为什么会让它变得复杂?另外,通过这种方式,您可以在GUI中执行此操作,并比较之前和之后的内容,以查看您真正需要进行的更改。但如果你必须手动完成,那么:
在记事本中打开文件%windir%\System32\inetsrv\config\applicationHost.config
。如果您遇到问题,请以管理员身份运行记事本。
专业提示:请勿使用notepad ++编辑applicationHost.config。你最终会秘密地,默默地保存一个32位的文件副本,该文件位于与IIS所查找的文件夹不同的文件夹中(由于Windows,而不是np ++)而不会实际影响你想要更改的文件。
你会看到这样的事情:
<httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath">
删除,defaultPath
部分并保存。
您将能够进行所需的更改。
答案 1 :(得分:5)
假设你还没有这样做......
转到IIS,选择您的网站,然后选择“错误页面”选项。在那里,找到404状态代码,右键单击并转到“编辑功能设置”。然后,您可以选择“自定义错误页面”并将“路径类型”更改为URL“执行URL”以进行一些重写,或将默认重定向页面更改为其他任何内容。将您的网址作为相对值输入,现在它应该在404错误时重定向到此网址。
编辑:如果运行以下命令,可能会锁定此配置,但是应该删除锁定:
%windir%\System32\inetsrv\appcmd unlock config -section:system.webserver/httperrors
完成后,您可以正确编辑网址。