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

nav*_*een 14 asp.net iis-7.5

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

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

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

我应该怎么做才能使我的自定义错误页面出现在我的网站而不是IIS错误页面?

Eri*_*ikE 32

简单的方法

如果您的IIS 7 Web服务器尚未安装它,请从Microsoft 安装IIS 7.0管理包.

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

解锁defaultPath属性

然后尝试再次更改自定义错误处理程序页面.导航到您的站点,Error Pages在IIS组下打开,单击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">
Run Code Online (Sandbox Code Playgroud)

删除该,defaultPath部分并保存.

您将能够进行所需的更改.


Ori*_*cle 5

假设你还没有这样做......

转到IIS,选择您的网站,然后选择"错误页面"选项.在那里,找到404状态代码,右键单击并转到"编辑功能设置".然后,您可以选择"自定义错误页面"并将"路径类型"更改为URL"执行URL"以进行一些重写,或将默认重定向页面更改为其他任何内容.将您的URL作为相对值放入,现在它应该在404错误上重定向到此URL.

编辑:有一点挖掘,在这种情况下,这个配置可能被锁定,如果你运行以下命令,它应该删除锁:

%windir%\System32\inetsrv\appcmd unlock config -section:system.webserver/httperrors
Run Code Online (Sandbox Code Playgroud)

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