如何将ASP.NET MVC站点从根应用程序移动到子应用程序文件夹?

时间:2009-08-31 14:37:21

标签: asp.net-mvc routing

我有一个MVC网站,我一直在开发,现在我希望升级到我的共享托管服务。但是,我遇到了一个问题:我的提供者只允许1个根级别的应用程序。

当我创建和应用程序作为我的根应用程序的子项时,我的MVC应用程序将无法工作。我要么得到一个“资源未找到”,或者在调整我的路由以包含子文件夹名称后,“a”没有匹配的路由“错误。

所以我的问题是,我该怎么办?如何调整路线?我的root应用程序不是MVC应用程序的事实吗?

2 个答案:

答案 0 :(得分:1)

首先,你不要改变路线名称,它们应该是app relative。

其次,您可能会遇到来自web.config继承的问题(即,您的mvc应用程序中的web.config继承了根目录中的web.config中的所有内容。)

您可以停止此继承,但您需要修改根应用程序web.config以包含所有内容的位置标记:

<configuration>
  <configSections>
    ... all your custom config sections here (if any) ...
  </configSections>
  <location path="." inheritInChildApplications="false">
    ... all your config stuff here (ie, system.web, connectionStrings) ...
  </location>
</configuration>

这样做是说,只将这些设置应用于路径'。',句点代表当前位置,然后inheritInChildApplications说'不要在子应用程序中继承这些设置'。

您甚至可以将要分享的位置标记之外的内容放在子应用程序中。


编辑:注意这可能无法解决您的问题(或者至少不是所有问题),有些可能是因为您已假设应用程序将在根目录中运行(主要是关于路径)。

答案 1 :(得分:0)

根目录未配置为MVC应用程序并不重要,但您确实需要确保/ bin /目录至少具有MVC程序集(如果它们不在GAC中)。尝试使用Phil Haack's route debugger查看路线是否存在任何问题。如果没有帮助您解决问题,这可以为我们提供更多信息!