在URL路由中强制页面的自定义404页面

时间:2011-06-09 09:11:00

标签: asp.net iis-7.5

IIS7.5上的编码平台ASP.NET 4.0 WebForms

如果我请求不存在的页面blahblah.aspx,我会导航到我的自定义错误页面,找不到页面异常。我已经实现了URL路由,所以我省略了所有路由的.aspx扩展名。

现在,如果我键入 www.mysite.com/blahblah(这是一个没有扩展名的网址)而不是转到我的自定义错误页面,它会被重定向到我的IIS 404错误页面。

如何使我的自定义错误页面显示在我的网站上而不是IIS错误页面上?

2 个答案:

答案 0 :(得分:31)

轻松的方式

如果您的IIS 7 Web服务器还没有,请安装Microsoft的IIS 7.0 Administration Pack

导航到IIS中的根Web服务器名称,然后打开Configuration Editor(管理包的一部分)。将下拉列表更改为system.webServer/httpErrors,右键点击defaultPath,然后选择'defaultPath' Attribute -> Unlock Attribute

Unlocking the defaultPath attribute

然后尝试再次更改自定义错误处理程序页面。导航到您的站点,在IIS组下打开Error Pages,单击右侧的Edit Feature Settings,选择Custom error pages,最后输入默认页面的路径。

Setting 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

完成后,您可以正确编辑网址。

相关问题