我有一个MVC网站,我一直在开发,现在我希望升级到我的共享托管服务。但是,我遇到了一个问题:我的提供者只允许1个根级别的应用程序。
当我创建和应用程序作为我的根应用程序的子项时,我的MVC应用程序将无法工作。我要么得到一个“资源未找到”,或者在调整我的路由以包含子文件夹名称后,“a”没有匹配的路由“错误。
所以我的问题是,我该怎么办?如何调整路线?我的root应用程序不是MVC应用程序的事实吗?
答案 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查看路线是否存在任何问题。如果没有帮助您解决问题,这可以为我们提供更多信息!