以下有3个链接,他们指向全是错误的。
1.
http://msdn.microsoft.com/c.h
2.
http://msdn.microsoft.com/c.
3.
http://forums.iis.net/c.
如果你点击这3个链接,你会发现,1和3都会跳转到它自定义的页面,但2不行,尽管他和3一样都是以点结尾。
我的问题就如2一样,他如果以点结尾,我自定义页面就失效了
------------------------------------------------------------------------------------------------------------------------------------------------
例子
环境
IIS 7.5 或 8.0
WIN7 32 或 server 2012 db 64
ASP.NET 4.0
集成模式
在一个空WEB 项目里就两页面,404.html 和 404.aspx
webconfig
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<customErrors mode="On" redirectMode="ResponseRewrite">
<error statusCode="404" redirect="404.html" />
</customErrors>
</system.web>
</configuration>
访问错误地址
以点结尾地址 他返回的是404.html 的HTML 源代码(200),
其他格式的错误页面则不能”您要找的资源已被删除、已更名或暂时不可用。“(404)
更改 webconfig
<error statusCode="404" redirect="404.aspx" />
访问错误地址
以点结尾地址 则”
运行时错误“(500),
其他格式的错误页面则不能”您要找的资源已被删除、已更名或暂时不可用。“(404)
更改 webconfig 添加
<system.webServer>
<httpErrors errorMode="Custom">
<remove statusCode="404" />
<error statusCode="404" path="/404.aspx" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
不管path 指向html 还是aspx
访问错误地址
以点结尾地址 则”
运行时错误。“(500),
其他格式的错误页面则正确返回httpErrors path 内容 (200)
再次更改 webconfig 添加
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
</handlers>
访问任意错误地址都可正确得到 httpErrors 设置。
我本以为解决了,但不是这样
再次更改 webconfig 添加
<modules runAllManagedModulesForAllRequests="true">
</modules>
或者
<!--添加 BeginRequest,PreSendRequestHeaders 就出现上面问题,但 PostRequestHandlerExecute 没问题-->
<modules>
<add />
</modules>
访问错误地址
以点结尾地址 则”
无法找到资源。“(404),
其他格式的错误页面则正确返回 httpErrors path 内容 (200)
-------------------------------------------------------------------------------------------------------------------------------------------
我无法在 asp.net 中捕获这个地址。但MSDN上又说
IIS 7.0 集成模式下,由一个统一的管道处理所有请求。 当集成管道收到请求时,该请求将经历所有请求共有的一些阶段。 这些阶段由 RequestNotification 枚举表示。 所有请求都可以配置为使用 ASP.NET 功能,因为该功能封装在可以访问请求管道的托管代码模块中。 例如,即使 .htm 文件扩展名未显式映射到 ASP.NET,对 HTML 页的请求仍会调用 ASP.NET 模块。
这问题类似于 windows 不准以点结尾的文件夹和文件。只要访问这种地址 就会出现这个问题。
但我看 www.iis.com 同样用的IIS 和asp.net 但他却解决了这个问题
那我该怎么做?