以点结尾的地址...

uinatlex 2014-03-16 04:59:09
以下有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 但他却解决了这个问题

那我该怎么做?

...全文
191 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
uinatlex 2014-04-01
  • 打赏
  • 举报
回复
暂时的解决方法

<httpRuntime relaxedUrlToFileSystemMapping="true"/>
uinatlex 2014-03-26
  • 打赏
  • 举报
回复
那我该怎么做?
uinatlex 2014-03-20
  • 打赏
  • 举报
回复
那我该怎么做?

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧