2011-12-21 98 views
2

我可以在〜/ priv /中有一个MVC3应用程序,而〜/ pub中有另一个?我可以将两个MVC3应用程序彼此相邻吗?

看来,如果我第一次将应用程序放在〜/ priv /中,那么当我转到“XXX.XXXXX.com/”时,它会在〜/ priv中提供应用程序。我可以用路线解决这个问题吗?有什么我失踪?请帮忙!

编辑: 需要明确的是,有没有一种方式,该结构可以是这样的:

[root] 
    [priv] 
    [pub] 

因此,如果有人去根没有一个被认为是,如果有人去根/私法他们的私人应用程序,如果有人去根/ pub他们得到酒吧应用程序。

+0

为什么你会嵌套虚拟目录/彼此内的应用程序? – 2011-12-21 20:33:21

+0

一个是专有应用程序,另一个是公共领域。它们不必嵌套。一个可以在〜/ pub /中,另一个可以在〜/ priv /中。唯一的问题是他们都会试图接管〜/。有没有办法阻止这种情况发生? – 2011-12-21 20:35:28

回答

2

你需要做的几件事情肯定:

  • 虚拟目录[酒馆]和[私法]必须每个被配置为在IIS中的应用。
  • 如果将[root]配置为应用程序,则子文件夹中的任何应用程序都将继承web.config中的值,即使它们在不同的应用程序池下运行。确保这不会导致冲突或意外行为。
  • 检查设置runAllManagedModulesForAllRequests=true。如果将[root]配置为应用程序,它可能会在IIS进入子应用程序之前拦截来自IIS的调用。你可能想添加以下内容[根]的web.config文件(但要确保覆盖此在[酒馆]和[私法]:

    <?xml version="1.0" encoding="utf-8"?> 
    <configuration> 
        <system.webServer> 
        <modules runAllManagedModulesForAllRequests="false"> 
          <remove name="UrlRoutingModule-4.0" /> 
         </modules> 
        </system.webServer> 
    </configuration> 
    
  • 然后,在web.config中的[酒馆]和[私法]您可以添加:

    <modules runAllManagedModulesForAllRequests="true"> 
        <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" /> 
    </modules> 
    
+0

根目录为空,并且没有任何文件,但提供程序可能将其定义为某个我无权访问的应用程序。 – 2011-12-27 21:53:14

+0

然后你需要添加一个web.config。 – 2011-12-27 22:01:22

+0

这是一个非常好的主意/要点!你可以编辑你的答案,以显示web.config文件除了模块定义之外还需要具备哪些内容,或者只有模块定义可以使用空白web.config? – 2011-12-27 23:44:48

2

您可以为每个应用程序创建子域。

+0

这不是一个坏的解决方案,但它是唯一的方法吗?每个子域必须有自己的主机。 – 2011-12-21 20:37:30

+0

这取决于您的托管计划。我使用IX,他们提供了一个非常合理的速度无限的子域。你可能想要检查你的ISP。 – 2011-12-22 23:47:16

3

您可以在一个站点下创建多个应用程序,并让它们使用不同的别名。

在IIS管理器中创建一个新网站。 右键单击该网站,然后选择'添加应用程序...',给出别名'priv',然后为您的其他'pub'网站重复该过程。

然后,您可以通过XXX.XXXXX.com/priv/mycontoller/myaction和另一个通过XXX.XXXXX.com/pub/mycontoller/myaction访问预测网站。

我想象你需要在IIS中为此创建一个新网站,而不是仅仅将应用程序添加到现有的ASP.Net MVC网站 - 正如我想象的那样会混淆路由。

+0

请务必不要将您的任何应用程序部署到您的网站的根目录,并且事情会正常工作。正如StanK所描述的那样,创建您的根站点,然后在站点内部创建单独的“应用程序”。 – 2011-12-22 04:05:00

+0

我无权访问IIS管理器,此站点通过托管公司托管。 – 2011-12-27 20:42:19

0

如果你能在一个Web应用程序合并公共和私人的应用程序,你可以利用领域的Asp.net MVC

在此。你可以通过区域或模块来划分应用程序在较小的分组中进行提示(在你的情况下是一个私有区域和一个酒吧区域) 实际上,Area是你应用程序中一个完整的MVC结构。

Grouping Controllers with ASP.NET MVC

App Areas in ASP.NET MVC, take 2

Walkthrough: Organizing an ASP.NET MVC Application using Areas

+0

尽管代码/内容/文件系统/将项目完全耦合在一起是可能的,但这并不是我想到的。你看,这个例子很小,因为我希望能够在单独的文件夹中部署几个(如果不是很多)应用程序。我不想重新编译来添加一个应用程序,我肯定不希望其他人开发应用程序来访问整个应用程序库的代码。 – 2011-12-28 11:10:34