我试图通过在IIS上使用入站规则将URL重写为另一个URL。我想要做的基本上是localhost/Membership/Login
之类的任何请求都是localhost/handlers/mapper.ashx?url=Membership/Login
。我所做的是创建一个类似下面的模式
(Membership\/)(.+)
并且重写网址是
http://localhost/handlers/mapper.ashx?url={R:0}
实际上这种方式并没有给我解决方案。它继续作为普通请求工作而不是mapper.ashx。
可能是什么问题?做这样的事情的正确方法是什么?
提前致谢,
答案 0 :(得分:2)
正如达拉斯已经指出的那样,除了你自己的解决方案建议之外,你还要求其他东西。但我会给你两种选择。首先,如果您只需要将URL的login
部分作为处理程序的methodname
参数,则可以使用以下重写规则:
<rule name="Rewrite to handler" stopProcessing="true">
<match url="^Membership/(.+)" />
<action type="Rewrite" url="/handlers/mapper.ashx?methodname={UrlEncode:{R:1}}" appendQueryString="false" />
</rule>
如果您需要url
参数中的完整网址作为您自己的解决方案建议,那么您可以使用以下重写规则:
<rule name="Rewrite to handler" stopProcessing="true">
<match url="^Membership/(.+)" />
<action type="Rewrite" url="/handlers/mapper.ashx?url={UrlEncode:{R:0}}" appendQueryString="false" />
</rule>
答案 1 :(得分:0)
这并不能解释为什么您的映射被跳过但您的示例和实际实现不同。你说你想要映射到
的请求本地主机/处理程序/ mapper.ashx?的方法名强> =登录
但您重写网址的示例是
http://localhost/handlers/mapper.ashx的网址 = {R:0}?
你的重写网址中有url,而不是methodname