我可以将两个MVC3应用程序彼此相邻吗?

时间:2011-12-21 20:30:47

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

我可以在〜/ priv /中使用MVC3应用程序,在〜/ pub中使用另一个吗?

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

编辑: 要明确的是,结构是否有一种方式:

[root]
  [priv]
  [pub]

所以如果有人去了root,看不到有人,如果有人去root / priv他们是priv app,如果有人去root / pub,他们会得到pub app。

4 个答案:

答案 0 :(得分:3)

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

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

然后你可以通过XXX.XXXXX.com/priv/mycontoller/myaction点击预测网站,另一个点击XXX.XXXXX.com/pub/mycontoller/myaction。

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

你需要确定几件事:

  • 虚拟目录[pub]和[priv]必须每个在IIS中配置为应用程序。
  • 如果将[root]配置为应用程序,则子文件夹中的所有应用程序都将继承web.config中的值,即使它们在不同的应用程序池下运行也是如此。确保这不会导致冲突或意外行为。
  • 检查设置runAllManagedModulesForAllRequests=true。如果将[root]配置为应用程序,它可能会在到达子应用程序之前拦截来自IIS的调用。您可能希望将以下内容添加到[root]的web.config中(但请务必在[pub]和[priv]中覆盖它:

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

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

答案 3 :(得分: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