asp.net - 为 URL 路由中的页面强制使用自定义 404 页面

标签 asp.net iis-7.5

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

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

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

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

最佳答案

简单的方法

如果您的 IIS 7 Web 服务器还没有它,请安装 IIS 7.0 Administration Pack来自微软。

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

Unlocking the defaultPath attribute

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

Setting custom error pages

这次没有锁定错误。

我最初尝试在网站级别解锁此属性但被阻止,因此请注意,您可能必须一直到 IIS 树的根目录,即 Web 服务器本身。

手动方式

我知道您可以通过在记事本中直接编辑 Web 服务器上的相应配置文件来完成所有这些工作。这可能是您特定的网络托管环境或公司生产网络服务器更改协议(protocol)所必需的。但是,如果不需要,为什么要让它变得复杂呢?另外,通过这种方式,您可以在 GUI 中进行操作,并比较之前和之后的结果,看看您真正需要进行哪些更改。但是,如果您必须手动操作,那么:

打开文件%windir%\System32\inetsrv\config\applicationHost.config在记事本中。如果遇到问题,请以管理员身份运行记事本。

专业提示:不要使用 notepad++ 编辑 applicationHost.config。您最终会 secret 地、静默地保存文件的 32 位副本,该副本位于与 IIS 所查看的文件夹不同的文件夹中(由于 Windows,而不是 np++),而不会实际影响您希望更改的文件。

你会看到这样的东西:

<httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath">

删除 ,defaultPath部分并保存。

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

关于asp.net - 为 URL 路由中的页面强制使用自定义 404 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6290517/

相关文章:

asp.net-mvc-3 - 并发请求时的 ASP.NET(或 IIS?)行为

asp.net - 在 ASP.NET 中诊断 "Thread was being aborted."

ASP.net 同源策略 header 不起作用

c# - 使用 mvc4 设置现有成员资格

asp.net - Global.asax 未发布且事件未在 Global.asax 中触发

javascript - 如果要在 ASP.NET MVC 5 中覆盖数据库行,如何向用户显示弹出窗口或警告

c# - 当前上下文中不存在名称 'UIFramework'

asp.net - 如何在 ASP.NET 中为不同的 URL 设置不同的超时

c# - 如何在回发时捕获并触发用户控件的自定义事件

asp.net-mvc-3 - 在服务器上运行 MVC3 应用程序会导致 403.14 响应