使用MVC4在URL末尾的点引发错误

时间:2016-06-06 17:20:55

标签: asp.net asp.net-mvc asp.net-mvc-4

http://localhost:56472/test.抛出丑陋的黄色ASP.NET错误消息 - The Resource Cannot be Found

如何捕获此请求和

  1. 防止丑陋的黄色
  2. 从请求中删除句点并重定向?
  3. 我在Global.asax

    中有这个
    protected void Application_Error(object sender, EventArgs e) {
            // Do whatever you want to do with the error
    }
    

    但错误并未被发现。这里捕获了正常的404,我成功地重定向到我的自定义错误页面。

    我正在部署到Azure PaaS,因此对IIS没有太多精细控制。

    更新:我尝试重写:

        <rule name="Strip Periods" stopProcessing="true">
          <match url="^(.*[^.])(\.+)$" />
          <conditions trackAllCaptures="false">
            <add input="{HTTP_HOST}" pattern="^site.com$" />
          </conditions>
          <action type="Redirect" url="{MapProtocol:{HTTPS}}://www.site.com/{R:1}" />
        </rule>
    

1 个答案:

答案 0 :(得分:2)

您需要两个步骤才能执行此操作。首先,处理重定向的重写规则:

<rule name="RemoveTrailingDot" stopProcessing="true">
    <match url="(.*)\.+$" />
    <action type="Redirect" url="{R:1}" />
</rule>

其次,以下指令(在this related answer中找到)

<system.web>
    <httpRuntime relaxedUrlToFileSystemMapping="true"/>
</system.web>

对相关答案的评论表明它并不总是有效,但它在Windows 10上的IIS上工作。