这很奇怪。我有一个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响应。
任何建议都将不胜感激。 谢谢!
答案 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>