我在web.config中设置了404处理程序页面,但仅当URL的扩展名为.aspx(或其他由ASP.NET处理的扩展名)时才起作用。 我知道我可以在网站选项中设置静态HTML页面,但我想要一个页面。 有没有办法在IIS中为所有请求扩展名分配ASPX处理程序页面?
我在web.config中设置了404处理程序页面,但仅当URL的扩展名为.aspx(或其他由ASP.NET处理的扩展名)时才起作用。 我知道我可以在网站选项中设置静态HTML页面,但我想要一个页面。 有没有办法在IIS中为所有请求扩展名分配ASPX处理程序页面?
重要提示:
IIS7带来了几项非常好的功能之一,它将所有页面通过处理程序路由,因此您可以自定义404和有用的目录和文件级安全性(基于与IIS7之前的asp.net文件相同的web.config信息)。因此,理论上,“使用II7”是一个答案(在未来将成为“答案”),但如果您没有在W2k8(或更高版本)上托管/被托管,则它并不实用。
web.config 只能为其网站控制的页面设置错误页。如果您有任何其他超出 ASP.Net 应用程序范围的页面,则需要在 IIS 中为它们设置处理方式。在那里有一个选项可以配置 404 页面,您可以将其指向您的自定义页面。
我能想到的另一件事就是将所有扩展名都传递给asp.net。
这样,所有类型的文件都将由asp.net处理,您的自定义错误页面也会起作用。
您可以在IIS中设置通配符映射(应用程序配置/映射/通配符映射/-只需将aspnet_isapi.dll设置为可执行文件并取消选中“验证文件是否存在”框),这将路由所有传入的请求到您的应用程序-因此您可以直接从中控制行为。
您不必在IIS应用程序设置中设置静态页面。在我的看法中,您应该能够从您的应用程序中设置有效的URL(例如/error_handler.aspx),以便在特定服务器错误的情况下用作着陆页。