URL IIS перезаписать исходящие PostBackUrls - PullRequest
0 голосов
/ 13 марта 2012

Я пытаюсь записать URL-адреса внутри своих веб-приложений, как входящих, так и исходящих, используя URL-переопределитель IIS следующим образом:

www.domain.net/SomeSite.aspx до www.domain.net/SomeSite, используя этот RegEx для входящих:

^([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}

Но теперь, для Исходящих, я бы хотелиметь тот же эффект, так что пользователь фактически видит www.domain.net/SomeSite, хотя мое веб-приложение может ссылаться на ~ / SomeSite.aspx внутри.

Для этого я использую следующий RegEx:

^([A-Za-z0-9]+).aspx([\?A-Za-z0-9=&#]+)?$и переписать URL следующим образом: /{R:1}{R:2}

В общем, это работает, увы, это не работает, например, для Response.Redirect, выполняемого в CodeBehind, и не работает для PostBackUrl s из asp:Button s.

Кто-нибудь знает, как переписать это исходящее правило, чтобы оно фактически перехватывало каждую ссылку независимо от того, как я на нее ссылался?

Спасибо,

Деннис

Edit:

Некоторые примеры, так как я полагаю, что я не был настолько ясен, как яhought:

Пользователь вводит www.domain.com/Login в браузере, Inbound-Rule перехватывает и перенаправляет на www.domain.com/Login.aspx, но показывает /Login в адресной строке, это поведение хорошо.

Однако, когдаЯ нажимаю, например, кнопку asp: с PostBackUrl Login.aspx. В адресной строке будет отображаться Login.aspx вместо желаемого Login, как получить именно такое поведение?

1 Ответ

0 голосов
/ 14 марта 2012

Как оказалось, единственное, что мне нужно было сделать, это добавить правило входящего перенаправления и установить для 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>
...