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

有帮助吗?

解决方案

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

首先,我认为“隐藏”了问题 - 你真正想要的答案 - 是否有办法重定向除ASPX,ASMX等以外的其他页面的所有404错误。是的,有,这是更好的选择如果它能解决你遇到的问题。

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

现在,如果这还不够 - 而且我真的希望它确实如此 - 是的,你可以通过ASPX处理程序运行每一页。然而,这样做的效率相当高 - 原始的HTML /图像服务比任何动态的都快。

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

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

其他提示

有关信息:

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

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

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

只有我能想到的其他事情是将所有扩展传递给asp.net。

这样,所有类型的文件都会被asp.net处理,你的自定义错误页面也会有效。

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

  1. 您可以在IIS中设置通配符映射(应用程序配置/映射/通配符映射/ - 只需将aspnet_isapi.dll设置为可执行文件并取消选中“验证该文件是否存在”框)以将所有传入请求路由到您的应用程序 - 所以你可以直接控制它的行为。

  2. 您不必在IIS应用程序设置中设置静态页面。 Imho,您应该可以从您的应用设置有效网址(例如/error_handler.aspx),以便在发生特定服务器错误时用作着陆页。

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

默认显示静态html C:\ Windows \帮助\ iisHelp \共同\ 404b.htm

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top