路由重写IIS7中的问题

时间:2011-08-11 13:11:13

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

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

<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上。

1 个答案:

答案 0 :(得分:0)

您的“匹配”行与/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更新的正则表达式