none
以点结尾的地址无法跳转404。 RRS feed

  • 问题

  • 环境

    IIS 7.5

    WIN7 或 server 2012 db

    ASP.NET 4.0 集成模式

    比如访问我web任意一错误地址,都可以跳转到我自定义的错误页面,但以 . 结尾的不行,始终返回下面这个样子。

    于是我在处理程序映射中删除关于处理 “*.” 的 ExtensionlessUrlHandler-Integrated-4.0 可以正常访问我自定义的404,

    但是如果的这时我在webconfig 下

    system.webServer -> modules 设置属性 runAllManagedModulesForAllRequests="true" 

    system.webServer -> modules -> add 一个 += new EventHandler(BeginRequestEvent) ,或 new EventHandler(PreSendRequestHeadersEvent)即使 BeginRequestEvent,PreSendRequestHeadersEvent 里什么都不干

    system.webServer -> handlers 定义重新定义 *. 的处理方式

    又会出现图片中的情况。

    我无法在程序中捕获这个地址。

    这么解决当出现.结尾地址可以跳转到我自定义的错误页面?

    2014年3月15日 8:10

全部回复

  • 你好,  

          我使用下面这样的配置,没有重现你的问题, 而且输入URL: "/C." 我的事抛出异常, 我想你的问题应该是出现在自定义方法中:

    <configuration>
    
       <system.web>
          <compilation targetFramework="4.0" />
    
          <customErrors mode="On" redirectMode="ResponseRewrite">
             <error statusCode="404" redirect="http404.aspx" />
          </customErrors>
       </system.web>
    
       <system.webServer>
          <httpErrors errorMode="Custom">
             <remove statusCode="404"/>
             <error statusCode="404" path="/http404.aspx" responseMode="ExecuteURL"/>
          </httpErrors>
       </system.webServer>
    
    </configuration>
           你最好能够提供一个简单的Demo,以方便我调试并重现你的问题, 找到解决方案。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place. &lt;br/&gt; Click &lt;a href=&quot;http://support.microsoft.com/common/survey.aspx?showpage=1&amp;scid=sw%3Ben%3B3559&amp;theme=tech&quot;&gt; HERE&lt;/a&gt; to participate the survey.

    2014年3月17日 3:03
    版主
  • 你好,  

          我使用下面这样的配置,没有重现你的问题, 而且输入URL: "/C." 我的事抛出异常, 我想你的问题应该是出现在自定义方法中:

    <configuration>
    
       <system.web>
          <compilation targetFramework="4.0" />
    
          <customErrors mode="On" redirectMode="ResponseRewrite">
             <error statusCode="404" redirect="http404.aspx" />
          </customErrors>
       </system.web>
    
       <system.webServer>
          <httpErrors errorMode="Custom">
             <remove statusCode="404"/>
             <error statusCode="404" path="/http404.aspx" responseMode="ExecuteURL"/>
          </httpErrors>
       </system.webServer>
    
    </configuration>
           你最好能够提供一个简单的Demo,以方便我调试并重现你的问题, 找到解决方案。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place. &lt;br/&gt; Click &lt;a href=&quot;http://support.microsoft.com/common/survey.aspx?showpage=1&amp;scid=sw%3Ben%3B3559&amp;theme=tech&quot;&gt; HERE&lt;/a&gt; to participate the survey.

    VS 2013 新建项目 - C# - web - vs2012 空 web 应用程序

    创建,404.aspx 和 404.html

    webconfig 如你所说

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.web>
        <compilation targetFramework="4.0" />
        <customErrors mode="On" redirectMode="ResponseRewrite">
          <error statusCode="404" redirect="404.aspx" />
        </customErrors>
      </system.web>
      <system.webServer>
        <httpErrors errorMode="Custom">
          <remove statusCode="404" />
          <error statusCode="404" path="/404.aspx" responseMode="ExecuteURL" />
        </httpErrors>
      </system.webServer>
    </configuration>

    发布到文件夹

    并在IIS 中部署 应用池 4.0 集成模式 其他全为默认设置

    访问404.html 得到正确200反馈,页面内容404.html

    访问404.aspx 得到正确200反馈,页面内容404.aspx

    A.访问 localhost:88/c.

    在 customErrors 下 如指定 为 redirect="404.aspx" 返回 500 页面内容 错误 显示 运行时错误

    如指定 为 redirect="404.html" 返回 200 但页面内容 错误,显示为 404.html 的源文件HTML代码

    B.在 <system.webServer> 下 添加

        <handlers>
          <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
        </handlers>

    访问 localhost:88/c. 得到 来自 httpErrors 下的404设置,正确,与 customErrors 下设置无关

    C.如再在 <system.webServer> 下 添加

    <modules runAllManagedModulesForAllRequests="true">
    </modules>

    访问 localhost:88/c.

    出现A中情况

    http://social.msdn.microsoft.com/Forums/zh-CN/150f2ece-dd92-4645-b13b-e6a2c997ec82/404.

    即使本页面 以点结尾也会出现该问题,这是asp.net 自身问题么


    • 已编辑 uinatlex 2014年3月18日 3:57
    2014年3月17日 13:58
  • 我测试了一下,在ASP.NET中的确存在你所说的问题,.aspx页面会经过服务器当找不到所请求的页面就会报500错误, 而.html页面不会进过服务器,当找不到请求页面就会返回404错误。

    这个问题主要涉及在IIS中 url 重写问题, 我想建议你到IIS论坛去问这个问题:http://forums.iis.net/, 相信那里的专家会给你提供更全面的支持。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place. &lt;br/&gt; Click &lt;a href=&quot;http://support.microsoft.com/common/survey.aspx?showpage=1&amp;scid=sw%3Ben%3B3559&amp;theme=tech&quot;&gt; HERE&lt;/a&gt; to participate the survey.

    2014年3月18日 8:49
    版主