MVC3 и IIS6 RedirectToAction перенаправляет на неправильный URL - PullRequest
1 голос
/ 17 ноября 2011

Это странно. У меня есть настройка виртуального каталога для приложения MVC3, которая называется (ради этого вопроса) я назову 'foobar'. Полный URL этого сайта:

http://localservername.domainname.com/foobar

В моей форме входа в систему у меня есть следующая строка, которая должна перенаправляться на главную / домашнюю страницу приложения после входа в систему.

return RedirectToAction("Index", "Home");

Однако, когда эта строка выполняется, меня перенаправляют в неправильное место, поэтому вместо перенаправления меня обратно на:

http://localservername.domainname.com/foobar

Я перенаправлен обратно на:

http://localservername.domainname.com/foobar/foobar

Что, конечно, дает мне ошибку ресурса not found. Кроме того, любые ссылки в моих представлениях, кажется, делают наоборот - например, если у меня есть такая ссылка:

<a href="/WidgetSearch">Widget Search</a>

Я ожидаю, что откроется следующий URL:

http://localservername.domainname.com/foobar/WidgetSearch

Вместо этого я перенаправлен на

http://localservername.domainname.com/WidgetSearch

Что, конечно, также дает мне ошибку ресурса not found. Я никогда не сталкивался с таким типом поведения раньше. Я просмотрел основные и расширенные настройки и создал новый пул приложений. Fiddler также показывает мне, что (конечно) URL-адреса, перечисленные выше, возвращают 404 ответа.

Любые предложения будут с благодарностью. Спасибо!

1 Ответ

1 голос
/ 17 ноября 2011

Первая проблема не должна произойти.RedirectToAction должен учитывать ваш путь к виртуальному каталогу (вы не жестко запрограммировали дополнительные /foobar в настройке маршрута, не так ли?).

Вторая проблема не имеет ничего общего с MVC, она просточто вы используете ванильную HTML-ссылку, которая указывает прямо на корень сервера (это то, что говорит /blah).Вы должны изменить свою ссылку, чтобы использовать один из вспомогательных методов MVC для генерации URL, вместо этого, чтобы убедиться, что он добавляет виртуальный каталог для вас.Итак, одно из следующего (первое, вероятно, лучший способ, если вам не нужно сильно настраивать внешний вид тега привязки):

@Html.ActionLink("Widget Search", "Index", "WidgetSearch")

или

<a href="@Url.Action("Index", "WidgetSearch")">Widget Search</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...