ASP.NET MVC + IIS7 + FireFox: косая черта в URL - PullRequest
18 голосов
/ 26 января 2010

Примечание: я часами копался в поисках ответа и не смог его найти.

У меня есть приложение 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/.Это неверное, но известное поведение.Поскольку [10] * нет [GET] - я получаю ресурс не найден (404).

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

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

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

Есть идеи / предложения?

РЕДАКТИРОВАТЬ :
Я прочитал http://www.hanselman.com/blog/ASPNETMVCAndTheNewIIS7RewriteModule.aspx,, как я уже сказал, я пытаюсь найти более простое решение, "ПростоОпция "Работа".

РЕДАКТИРОВАТЬ :
У меня есть видимое решение с добавлением косой черты (/) к каждому URL, опять же, похоже, небыть самым элегантным решением.

Ответы [ 3 ]

1 голос
/ 04 августа 2011

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

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

0 голосов
/ 04 августа 2011

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

0 голосов
/ 24 июля 2011

Можете ли вы сказать IIS вернуть 307 вместо 302?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...