【问题标题】:Routes Rewrite issue in IIS7IIS7 中的路由重写问题
【发布时间】:2011-08-11 13:11:12
【问题描述】:

我正在使用 IIS7 / C# / WebForms / .net Framework 3.5 我在我的 web.config 中使用路由 这是一个路线部分

<system.webServer>
  ..
  <rewrite>
     <rules>

    <rule name="LoginRuleRewrite" stopProcessing="true">
        <match url="^Employee/Login$" />
        <action type="Rewrite" url="WebForms/Employees/Login.aspx" redirectType="Permanent" />
    </rule>
    </rules>
  </rewrite>

现在,当打开我的页面http://localhost/Employee/Login 时,它会从 /WebForms/Employees/Login.aspx 目录正确显示登录表单。但是当我单击登录按钮时,我收到 404 错误“未找到请求的 URL /Employee/Login.aspx”

为什么会这样?虽然它正确显示表单,但在提交时为什么它转到 /Employee/Login.aspx 而不是 /WebForms/Employee/Login.aspx

仅供参考,此应用程序在 IIS7.5 下运行良好。问题在于 IIS7。

【问题讨论】:

    标签: c# asp.net iis-7 routes


    【解决方案1】:

    您的“匹配”行与 /Employee/Login.aspx 不匹配。仅当 .aspx 扩展名不存在时才会匹配。你应该这样做:

    <rule name="LoginRuleRewrite" stopProcessing="true">
        <match url="^Employee/Login(\.aspx)?$" />
        <action type="Rewrite" url="WebForms/Employees/Login.aspx" redirectType="Permanent" />
    </rule>
    

    感谢 LazyOne 更新正则表达式

    【讨论】:

    • 我会改用^Employee/Login(\.aspx)?$ -- 这将涵盖两种情况(在 URL 中使用和不使用 .aspx)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    相关资源
    最近更新 更多