【问题标题】:MVC3 and IIS6 RedirectToAction redirects to wrong URLMVC3 和 IIS6 RedirectToAction 重定向到错误的 URL
【发布时间】:2011-12-30 23:41:01
【问题描述】:

这很奇怪。我有一个名为(为了这个问题)的 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>

我希望打开以下 URL:

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

相反,我被重定向到

http://localservername.domainname.com/WidgetSearch

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

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

【问题讨论】:

  • 如果您有默认路由以外的其他路由,请出示。
  • 你解决了你的第一个问题了吗?我面临同样的问题。我的路由是 routes.MapRoute( "BarCodeScan", //Route name "{controller}/{action}/BarCode/{*BarCode}", // URL with parameters new { controller = "Home", action = "ProcessBinBatchBarCode" , BarCode = string.Empty } // 参数默认值 );

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


【解决方案1】:

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

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

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

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

【讨论】:

  • 感谢您的回答,今晚我会更新链接。但是第一个让我很难过 - 一个真正的挠头。
  • @AndyEvans - 我能想到的只有您的路线设置...您的路线注册是什么样的?除了正常的默认"{controller}/{action}/{id}" 之外,您还有什么其他的吗?在代码中的任何地方都不应提及您的虚拟目录/foobar,因为它应该由底层框架处理。
  • 你是对的。 /foobar 在我的项目中没有出现。这很严重。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-18
  • 2013-06-18
  • 2011-08-31
  • 1970-01-01
  • 2021-07-19
  • 2020-07-07
  • 2021-04-14
相关资源
最近更新 更多