我正在使用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上。
答案 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更新的正则表达式