我可以在〜/ priv /中使用MVC3应用程序,在〜/ pub中使用另一个吗?
似乎如果我第一次将应用程序放在〜/ priv /中,那么当我转到“XXX.XXXXX.com/”时它会在〜/ priv中提供应用程序。我可以用路线解决这个问题吗?有什么我想念的吗?请帮忙!
编辑: 要明确的是,结构是否有一种方式:
[root]
[priv]
[pub]
所以如果有人去了root,看不到有人,如果有人去root / priv他们是priv app,如果有人去root / pub,他们会得到pub app。
答案 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)
你需要确定几件事:
检查设置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