【问题标题】:Problems with ASP.NET MVC site as an application in IISASP.NET MVC 站点作为 IIS 中的应用程序的问题
【发布时间】:2011-08-05 01:08:10
【问题描述】:

我有一个 MVC 项目,我刚刚将它作为应用程序安装在现有 IIS 站点上。在测试时,路由工作得很好,因为它在 localhost 的根目录下运行,但是当我将它部署为应用程序时,路由会变得混乱(它试图将任何方法路由到 http://foo.com/search 而不是 http://foo.com/bar/search)。我知道这应该是一个相当简单的解决方法,但我似乎无法想出谷歌似乎喜欢的正确措辞。
FWIW,我尝试执行以下操作,但它开始抛出 403 错误:

routes.MapRoute(
            "Default", // Route name
            "bar/{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

最初该 URL 是“{controller}/{action}/{id}”而不是“site/...”。

有什么想法吗?

【问题讨论】:

  • 您是否确定在 get/post 调用中调用的是 Url.Content("~/") 而不是 "~/"
  • 做到了。我对 MVC 很陌生,只是直接输入 URL,而不是 Url.Content。谢谢!
  • 很高兴我能帮上忙。我将我的评论作为答案重新发布,因此您可以将其作为首选答案进行检查(如果它当然对您有帮助)

标签: asp.net-mvc-3


【解决方案1】:

确保在 get/post 调用中调用 Url.Content("~/") 而不仅仅是 "~/"

我之前在一些 mvc 项目中遇到过这个问题,所以我认为这就是正在发生的事情。

祝你好运!

(如果不能发表我的评论作为答案,我将删除它)

【讨论】:

  • 我没关系,我只是在等你写一个答案,所以我可以将它标记为解决方案。
【解决方案2】:

我认为您正在尝试将一些模块分成一些其他子文件夹结构。您是否尝试过使用区域?

仅仅使用现有的 url 来重新路由并不容易。

尝试在您的 VS 2010 项目上单击鼠标右键并添加一个区域。该区域下的所有控制器和视图都将落入一个子文件夹中。例如,我有一个类似http://localhost:4000/admin/manageuser/add

的网址

【讨论】:

  • 父站点和mvc应用在两个不同的项目中。它们只在生产环境中聚集在一起。不过,我将来会对此进行研究。事实证明,正如 Evan Layman 在我的帖子的评论中所说,我使用的是直接 URL,而不是 Url.Content。
猜你喜欢
  • 1970-01-01
  • 2015-09-08
  • 2016-02-21
  • 2023-03-27
  • 2015-02-11
  • 2014-09-02
  • 1970-01-01
  • 2010-12-29
  • 1970-01-01
相关资源
最近更新 更多