При перенаправлении URL-адреса метод 405 не обнаруживается при перенаправлении в другое приложение из другого пула приложений. - PullRequest
0 голосов
/ 05 апреля 2019

Я работаю над перенаправлением определенного маршрута к другому приложению на том же сайте IIS, но он находится в другом пуле приложений. Хотя я получил это, чтобы переписать URL-адрес, он не позволяет переписать приложение, которое находится в другом пуле приложений, без использования ARR (Application Request Routing) или, как я прочитал.

В настоящее время я пытаюсь просто выполнить перенаправление, и, похоже, все в порядке для запроса GET, но когда я выполняю POST-вызовы, он завершается с ошибкой «Метод не разрешен». Используя fiddler, он выполняет GET, когда отправляет сообщение POST.

Если кто-то может высказать некоторые предложения, возможно ли для этого просто перенаправить URL-адрес, но сохранить то же тело и метод запроса?

Мое "переписать" выглядит следующим образом с некоторыми незначительными изменениями

    <rewrite>
    <rules>
    <rule name="REST1 to REST2" stopProcessing="true">
        <match url="^REST1/Service/([_0-9a-z-]+)" />
        <action type="Redirect" url="site.com/REST2/Service/{R:1}" />
        </rule>
     </rules>
     </rewrite>

Это похоже на перенаправление URL просто отлично, но не на метод или тело запроса. Это то, что я собираюсь сделать с переписать? Если да, то любое предложение сделать это при отправке запроса в приложение из другого пула приложений.

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Пожалуйста, попробуйте изменить тип действия на Переписать вместо Перенаправления.

Перенаправление всегда приводит к отправке заголовка перенаправления в браузер. Это изменит URL в адресной строке браузера, и браузер затем выдаст HTTP GET для нового адреса. С HTTP GET никакие данные формы / публикации никогда не отправляются; предполагается, что все аргументы находятся в строке запроса URL.

Если вы хотите избежать перенаправления и использовать истинное переписывание, измените ваш web.config на использование action = rewrite. При использовании этого метода заголовок перенаправления не отправляется обратно в браузер, адресная строка браузера никогда не изменяется, а IIS просто перенаправляет текущий поток запросов в другое место.

0 голосов
/ 05 апреля 2019

Ваше правило ответит перенаправлением кода состояния 301, которое клиент (я полагаю, браузер) решит, что делать. Если ваш клиент не является браузером, вы можете указать ему повторить тот же запрос на новую конечную точку. В противном случае перезапись (или перезапись + ARR, если вы хотите использовать кросс-пул приложений) - вот как вы это сделаете.

...