Можно ли написать правило перезаписи URL IIS, которое проверяет содержимое HTTP Post? - PullRequest
4 голосов
/ 03 июня 2010

Мне нужно разделить часть функциональности от устаревшей библиотеки ISAPI на другое решение (скорее всего ASP.NET MVC). Переписывание URL в IIS7 звучало как идеальный кандидат на работу, но оказалось, что я не могу найти способ настроить правила так, как мне нужно. Мне нужно написать правило, которое проверяет содержимое сообщения HTTP для конкретного значения.

<form method="post" action="legacy_isapi.dll">
  <input name="foo" />
</form>
if (Request.Form["foo"] == "bar")
    Context.RewritePath("/some_other_url/on_the_same_machine/foo/bar");

В качестве подтверждения концепции я смог создать IHttpModule, который проверяет коллекцию context.Request.Form и выполняет перезапись при наличии определенных параметров. Я установил этот модуль на свой сайт, и он работает.

Однако вместо пользовательского модуля я бы предпочел расширить существующий модуль перезаписи URL, чтобы он поддерживал проверку содержимого HTTP-сообщения как одного из его правил. Возможно ли это?

1 Ответ

0 голосов
/ 03 июня 2010

Не представляется возможным - похоже, что проверяются только заголовки.

http://learn.iis.net/page.aspx/465/url-rewrite-module-configuration-reference/#Rewrite_Rules_Overview

Вы можете проверить определенные значения заголовков HTTP или серверных переменных

Если вы можете переключиться с POST на GET, вы можете проверить QUERY_STRING

...