Подтвердить что ты не робот

ASP.NET MVC + IIS7 + FireFox: конечная косая черта в URL-адресе

Примечание. Я потратил много времени на поиски ответа и не нашел его.

У меня есть приложение ASP.NET MVC (2.0), размещенное на IIS7 (интегрированный режим).

Когда запрос GET сделан на /Toons/List - я получаю перенаправление (302) до /Toons/List/, которое ожидается.

ПРОБЛЕМА
Но когда я отправляю запрос POST, скажем, /Toons/Add (не замечает конечной косой черты), сервер снова возвращает перенаправление (302) на /Toons/Add/. На этом этапе FireFox ошибочно отправляет запрос GET на этот URL-адрес перенаправления. То есть [GET] /Toons/Add/ вместо [POST] /Toons/Add/. Это неправильное, но известное поведение. Поскольку на /Toons/Add/ нет [GET] - я не получаю ресурс (404).

Я размещаю свое приложение с webhost4life и не имею доступа к IIS7, что ограничивает мое использование перезаписи URL-адресов и использования модулей (я работаю с ними, чтобы обойти это). Но даже чем, ISAPI - лучший способ пойти? Я не знаю этого достаточно, чтобы чувствовать себя хорошо в этом.

Это была общая проблема, я удивлен, что не мог найти для этого легкого решения.

Есть ли решение, которое не предполагает использования суффикса .aspx/.mvc и перезаписи URL?
Из этих двух, если понадобится, какой из них я должен предпочесть?

Любые идеи/предложения?

ИЗМЕНИТЬ:
Я прочитал http://www.hanselman.com/blog/ASPNETMVCAndTheNewIIS7RewriteModule.aspx, как я уже сказал, я пытаюсь найти более легкое решение, вариант "Just Work".

ИЗМЕНИТЬ:
Я видел решение с добавлением косой черты (/) на каждый URL, опять же, кажется, не очень элегантное решение.

4b9b3361

Ответ 1

При связывании вы должны использовать фактический URL/маршрут. Если вы не можете удалить косую черту с маршрута из-за ограничения среды размещения или версии 2.0 MVC-структуры, вам нужно включить конечную косую черту в своих URL-адресах.

Использование сервера для перенаправления каждого URL-адреса увеличивает время обработки сервера и время загрузки страницы.

Ответ 2

Можете ли вы сообщить IIS о возврате 307 вместо 302?

Ответ 3

Установили ли вы метод действия в контроллере, чтобы принять сообщение HttpVerbs? Вы также можете попробовать настроить маршрут в Global.asax для /Toons/Add, поэтому MVC не читает его как/Controller/Method/