C# IIS URL重写出站回发URL

C# IIS URL重写出站回发URL,c#,asp.net,iis,url-rewriting,urlrewriter.net,C#,Asp.net,Iis,Url Rewriting,Urlrewriter.net,我正在尝试使用IISs URLEwriter在我的Web应用程序中写入URL,包括入站和出站,如下所示: www.domain.net/SomeSite.aspx到www.domain.net/SomeSite使用此正则表达式进行入站: ^[A-Za-z0-9]+[\?A-Za-z0-9=&]+?$,令我惊讶的是,这实际上也适用于URL,例如www.domain.net/SomeSite.aspx?abc=1=>www.domain.net/SomeSite?abc=1,使用以下重写操作:{R:

我正在尝试使用IISs URLEwriter在我的Web应用程序中写入URL,包括入站和出站,如下所示:

www.domain.net/SomeSite.aspx到www.domain.net/SomeSite使用此正则表达式进行入站:

^[A-Za-z0-9]+[\?A-Za-z0-9=&]+?$,令我惊讶的是,这实际上也适用于URL,例如www.domain.net/SomeSite.aspx?abc=1=>www.domain.net/SomeSite?abc=1,使用以下重写操作:{R:1}.aspx?{R:2}

但是现在,对于Outbound,我希望具有相同的效果,以便用户实际看到www.domain.net/SomeSite,即使我的Web应用程序可能在内部引用~/SomeSite.aspx

为此,我使用以下正则表达式:

^[A-Za-z0-9]+.aspx[\?A-Za-z0-9=&]+?$并重写URL,如下所示:/{R:1}{R:2}

总的来说,唉,这不适用于在CodeBehind中执行的Response.Redirect,也不适用于来自asp:Buttons的PostBackURL

有没有人知道如何重写这个出站规则,以便不管我如何引用它,它都能捕获每个链接

谢谢

丹尼斯

编辑:

一些例子,因为我想我没有我想的那么清楚:

用户在浏览器中输入www.domain.com/Login,入站规则捕获并重定向到www.domain.com/Login.aspx,但仍在地址栏中显示/Login,此行为正常


然而,当我点击一个带有PostBackUrl Login.aspx的asp:按钮时,地址栏将显示Login.aspx而不是所需的登录名,如何准确地获得这种行为?

事实证明,我唯一需要做的就是添加一个入站重定向规则,并将这两个规则的stopProcessing设置为true。结果如下:

<rules>
        <rule name="Clean URL" stopProcessing="true">
            <match url="^([A-Za-z0-9]+)([\?A-Za-z0-9#=&amp;]+)?$" />
            <action type="Rewrite" url="{R:1}.aspx{R:2}" />
        </rule> 
        <rule name="CleanTest" stopProcessing="true">
            <match url="^([a-z0-9/]+).aspx([a-zA-Z0-9\?#=&amp;]+)?$" />
            <action type="Redirect" url="{R:1}{R:2}" />
        </rule>
</rules>

为什么不将PostBackUrl改为/Login而不是Login.aspx?我认为这应该行得通,至少我是这样处理正常的锚定标签的,这样就省去了出站的麻烦!是的,这是可行的,但这会非常不方便,因为我需要在IIS上而不是在开发服务器上进行调试。