MVC3和IIS6 RedirectToAction重定向到错误的URL

时间:2011-11-17 03:00:47

标签: asp.net-mvc-3 iis-6

这很奇怪。我有一个MVC3应用程序的虚拟目录设置(为了这个问题)我将称之为'foobar'。该网站的完整网址是:

http://localservername.domainname.com/foobar

在我的登录表单中,我有以下行,应该在登录后重定向到应用程序的主/主页。

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

但是,当这一行执行时,我会被重定向到错误的位置 - 所以不要将我重定向到:

http://localservername.domainname.com/foobar

我被重定向回到:

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

这当然会让我找不到资源错误。此外,我的观点中的任何链接似乎都相反 - 例如,如果我有这样的链接:

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

我希望打开以下网址:

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

相反,我被重定向到

http://localservername.domainname.com/WidgetSearch

当然,这也会让我找不到资源错误。我以前从未遇到过这种行为。我已经完成了基本和高级设置并创建了一个新的应用程序池。 Fiddler还告诉我(当然)上面列出的URL返回404响应。

任何建议都将不胜感激。 谢谢!

1 个答案:

答案 0 :(得分:1)

第一个问题不应该真的发生。 RedirectToAction应该考虑您的虚拟目录路径(您还没有将额外的/foobar硬编码到您的路由设置中吗?)。

第二个问题与MVC无关,只是你正在使用一个直接指向服务器根目录的vanilla HTML链接(这就是/blah所暗示的)。您应该更改链接以使用其中一个MVC帮助程序方法来生成URL,以确保它为您添加虚拟目录。所以下面的一个(第一个可能是最好的方法,除非你需要大量定制锚标签的样子):

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

<a href="@Url.Action("Index", "WidgetSearch")">Widget Search</a>