繁体   English   中英

ASP.NET / IIS:404适用于所有文件类型

[英]ASP.NET/IIS: 404 for all file types

我在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和 - 有用的 - 目录和文件级安全性(基于与asp相同的web.config内容) IIS7之前的.net文件)。

因此,从理论上说“使用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,您应该能够从您的应用程序设置有效的URL(例如/error_handler.aspx),以便在发生特定服务器错误时用作登录页面。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM