Я использую URL Rewrite, чтобы отправить все запросы на ci.pl на созданный мной прокси (запрос имеет ci.pl, затем перенаправить на: /proxy/handler.ashx; добавить строку запроса: да ). Работает отлично. По-видимому, есть действительно старое клиентское приложение, которое отправляет следующие запросы: http://webserver.com/ci.pl%3F4+505000+0+0+5
Когда должно быть отправлено: http://myserver.com/ci.pl?4+505000+0+0+5
В итоге происходит то, что правило ci.pl перенаправляет на прокси-сервер, но, поскольку ? принимается как % 3F , параметры отсутствуют включен в редирект.
Я не могу обновить устаревшее клиентское приложение, поэтому я пытался придумать правило перезаписи URL-адреса, чтобы обнаружить % 3F + проход по строке справа от % 3F . Кто-нибудь делал что-то подобное?
Вот конфигурация, которая близка, но строка справа от % 3F не передается прокси.
<rewrite>
<rules>
<clear />
<rule name="Handle %3F" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{QUERY_STRING}" pattern="*ci.pl%3F*" />
</conditions>
<action type="Redirect" url="/proxy/handler.ashx?{C:2}" appendQueryString="false" />
</rule>
<rule name="Detect CI.PL">
<match url="(.*)" />
<conditions>
<add input="{PATH_INFO}" pattern="ci.pl" />
</conditions>
<action type="Rewrite" url="/proxy/handler.ashx" />
</rule>
</rules>
</rewrite>