在IIS7.5网站中托管多个ASP.Net MVC3应用程序时出现问题

时间:2012-05-09 17:24:20

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

一些规格:

  • IIS 7.5
  • ASP.Net MVC3

我想要托管三个MVC3应用程序:

  1. 项目A
  2. 项目B
  3. 项目C
  4. 我希望网址分别为:

    1. http://domain/
    2. http://domain/ProjectB
    3. http://domain/ProjectC
    4. 所以在IIS中,我有默认网站,它指向ProjectA的文件夹。然后我添加了两个应用程序,一个指向ProjectB,一个指向ProjectC,以及它们在硬盘上的相应文件夹。我将网站存储在C:\ sites中。每个项目在C:\ sites中都有一个文件夹,其中包含应用程序的文件。如您所见,这些站点在服务器上根本没有嵌套。

      当我加载http://domain/ProjectB时,它正在尝试从ProjectA web.config加载配置值。显然这不是我想要的,我在服务器配置上并不是那么棒。我通过将大部分ProjectA web.config包装在一个位置标记中来实现它:

      <location path="." inheritInChildApplications="false" >
          <!-- Lots of web.config stuff for ProjectA -->
      </location>
      

      我真的不喜欢这个,感觉不对。对我来说,似乎IIS中我的站点中的嵌套应用程序甚至不知道父站点。我究竟做错了什么?我敢肯定它真的很小。我本可以将ProjectA作为一个应用程序,但我不想在其上添加别名,因为我希望http://domain/为用户提供它。

      同样,我对服务器的知识并不了解,这对我来说并不好玩,所以我为什么要问你们呢!

      谢谢!

2 个答案:

答案 0 :(得分:3)

这就是它的工作原理。默认情况下,asp.net应用程序继承其父Web.config,您需要覆盖较低web.config中的这些值,或者将其包装在inheritInChildApplications =“false”属性中,如上所述。

一种可能的选择是,如果您可以在网站的根目录中创建主页而不是asp.net应用程序。如果你做不到,你就会坚持这样做。

答案 1 :(得分:0)

在goDaddy上,您可以使用“set application root”创建iis虚拟目录,然后使每个使用“set application root”的导向器充当根目录(就像您想要的那样)。用户没有注意到任何事情。所以你可以看一下,看看你是否有这个选择?