5

我在 web.config 中设置了 404 处理程序页面,但它仅在 URL 的扩展名是 .aspx(或由 ASP.NET 处理的其他文件)时才有效。我知道我可以在网站选项中设置静态 HTML 页面,但我想要一个页面。是否有任何选项可以为 IIS 中的所有请求扩展分配 ASPX 处理程序页面?

4

7 回答 7

11

直接的问题是是否有选项可以将 ASPX 处理程序分配给所有请求扩展:是的,有。我将很快讨论如何做到这一点。

首先,我认为“隐藏”的问题——你真正想要的答案——是是否有办法重定向除 ASPX、ASMX 等以外的页面的所有 404 错误。是的,有,而且这个更好选择它是否可以解决您遇到的问题。

要重定向 IIS 6 中的所有 404,请右键单击您的 Web 应用程序根目录(无论是它自己的站点还是主站点中的虚拟目录),然后选择“属性”。从那里,选择“自定义错误”选项卡。在列表中找到 404 并将其更改为您想要的重定向。

现在,如果这还不够——我真的希望它够——是的,您可以通过 ASPX 处理程序运行每个页面。然而,这样做会在效率方面付出相当高的成本——原始 HTML/图像服务比任何动态服务都要快得多。

为此,请右键单击您的 Web 应用程序根并选择“属性”。选择“主目录”选项卡。点击“配置;” 将弹出一个新窗口。从 ASP.NET 页面服务之一复制路径,然后将其用于通配符应用程序映射。

请记住,大多数时候这是错误的答案。它会对您的表现产生负面影响,相当于使用电锯雕刻火鸡。我强烈推荐第一个选项而不是这个选项,如果它适合你的话。

于 2008-09-25T13:18:31.407 回答
2

有关信息:

这是 IIS7 带来的几个好处之一 - 所有页面都通过处理程序进行路由,这样您就可以执行自定义 404 并且 - 有用 -任何文件的目录和文件级别安全性(基于与 asp 相同的 web.config 内容) IIS7 之前的 .net 文件)。

因此,从概念上讲,“使用 II7”是一个答案(将是“及时”的答案)——但如果您没有托管/托管在 W2k8(或更高版本)上,它当然不是一个非常实用的答案。

于 2008-09-25T13:21:18.200 回答
1

web.config 只能为其网站控制的页面设置错误页面。如果您有 ASP.Net 应用程序范围之外的任何其他页面,那么您可以在 IIS 中为它们设置处理。那里有一个用于配置 404 页面的选项,您可以将其指向您的自定义页面。

于 2008-09-25T13:13:21.993 回答
1

我能想到的唯一另一件事是将所有扩展传递给asp.net。

这样,所有类型的文件都由 asp.net 处理,您的自定义错误页面将正常工作。

于 2008-09-25T13:15:16.967 回答
1

在 IIS 应用程序配置中,可以设置通配符映射(“.*”)到 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll

于 2008-09-25T13:16:44.653 回答
0
  1. 您可以在 IIS 中设置通配符映射(应用程序配置/映射/通配符映射/ - 只需将 aspnet_isapi.dll 设置为可执行文件并取消选中验证文件是否存在框),这会将所有传入请求路由到您的应用程序 - 这样您就可以控制行为直接从它。

  2. 您不必在 IIS 应用程序设置中设置静态页面。恕我直言,您应该能够从您的应用程序中设置有效的 url(例如 /error_handler.aspx),在特定服务器错误的情况下将其用作登录页面。

于 2008-09-25T13:25:37.097 回答
0

在 IIS 中,您可以为 404 错误设置自定义错误并将其定向到站点属性中的 URL。

它默认显示静态 html C:\WINDOWS\help\iisHelp\common\404b.htm

您可以将其更改为您网站上的相对网址。

于 2013-08-14T09:40:06.653 回答