Asp.net mvc 3 IIS 7能否将默认url设置为MVC 3区域

Asp.net mvc 3 IIS 7能否将默认url设置为MVC 3区域,asp.net-mvc-3,iis-7,asp.net-mvc-3-areas,Asp.net Mvc 3,Iis 7,Asp.net Mvc 3 Areas,我有一个MVC 3解决方案,它分为几个方面。我可以通过以下方式访问应用程序,例如://myapp/或//myapp/外部或//myapp/内部。我试图在IIS 7中实现的是将默认URL(在我的示例中是//myapp)设置为//myapp/internal 因此,每当有人导航到//myapp时,他们都会被重定向到//maypp/internal(internal是我在MVC中设置的区域的名称) 我真的在寻找一种在服务器上而不是在global.asax上实现这一点的方法。原因是因为此应用程序将位于多

我有一个MVC 3解决方案,它分为几个方面。我可以通过以下方式访问应用程序,例如://myapp/或//myapp/外部或//myapp/内部。我试图在IIS 7中实现的是将默认URL(在我的示例中是//myapp)设置为//myapp/internal

因此,每当有人导航到//myapp时,他们都会被重定向到//maypp/internal(internal是我在MVC中设置的区域的名称)

我真的在寻找一种在服务器上而不是在global.asax上实现这一点的方法。原因是因为此应用程序将位于多个服务器上,我不希望每次需要部署应用程序时都必须更改默认路由


感谢您的帮助。

最简单的方法是在//myapp/处创建一个默认控制器,301是//myapp/internal的用户。总会有人在键入mydomain.com时突然一无所获


或者,在主Global.asax.cs中创建与blank匹配的特定路由,并路由到指定的控制器、操作和区域。这几乎颠覆了“区域完全独立”的概念。

我最终以以下方式解决了我的问题:

a。在我的Web.Internal.config文件中,我添加了以下转换:

<appSettings>
    <add key="Environment" value="Production Internal(Live)" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
</appSettings>         
上面的代码将检查环境值在我的情况下是否等于“生产内部(活动)”,并将请求重定向到“内部”区域

现在,当内部用户导航到时,他们将被重定向到该区域


当外部用户导航到时,他们不会被重定向到任何区域,但如果需要,您可以根据上述内容将用户重定向到任何区域。

我正在IIS中寻找更多的解决方案,允许我将默认url、文档、路由等设置到某个区域。我可以在controller或global.asax中执行此操作,但这意味着每次部署到不同的服务器时,我都需要记住更改controller或global.asax.url重写模块,尽管这会生成一些需要迁移的web.config设置。我最后在web.Internal.config文件中为我的appSettings添加了一个密钥,然后在默认控制器中检查该键的值。如果密钥匹配“Internal”,那么我会将用户重定向到该控制器。现在,我可以将应用程序部署到多个位置,而无需每次更改值。感谢您的帮助和投入。@GPB感谢分享您所做的一切。我想要一个类似的解决方案,你的评论帮助我找到了一个。你应该把它作为一个答案发布:)@Rachel我很高兴它帮助了你,我会发布一个更详细的答案。
var InternalorExternalSite = Convert.ToString(ConfigurationManager.AppSettings["Environment"]);

if (InternalorExternalSite == "Production Internal(Live)")
    {
        return RedirectToAction("", "", new { area = "Internal" });
    }