IIS7中的路由重写问题

本文关键字:重写 问题 路由 IIS7 | 更新日期: 2023-09-27 18:05:07

我使用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目录。但是当我单击Login按钮时,我得到404错误"请求的URL/Employee/Login"。未找到Aspx "

为什么会发生这种情况?当它正确显示表单时,请提交为什么它转到/Employee/Login。/WebForms/Employee/Login.aspx

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

IIS7中的路由重写问题

您的'match'行将不匹配/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更新的正则表达式