IIS7应用程序配置

时间:2010-12-20 21:16:56

标签: asp.net iis-7 web-config

我有一个自定义的ASP.NET应用程序,我用它来托管我的几个客户端。每个客户端都有一个单独的域,应用程序通常是根域(http://domain.com/customapp)下的子应用程序。应用程序文件是相同的(aspx,ascx,样式表,图像等)。唯一不同的是每个客户端的web.config文件。随着应用程序的开发不断发展,我必须更新每个目录的应用程序,这显然变得乏味。我想提出一种方法让应用程序保持最新状态。我的第一个是将应用程序放在单个物理路径中并创建指向该路径的多个应用程序(此方法的问题是我不能有不同的web.config文件)。我很好奇其他人在这种情况下使用了什么解决方案...

2 个答案:

答案 0 :(得分:1)

如果您想在Visual Studio中完全处理此问题,VS2010 offers web.config transforms可以解决您的问题。

简而言之,为每个站点创建一个构建配置(在VS中,选择Build | Configuration Manager ...)。为每个客户端添加web.config转换,仅指定每个应用程序所需的差异。

我使用它来区分开发,登台和发布配置 - 每个转换调整连接字符串,应用程序设置等 - 它在Visual Studio和通过MSBuild进行部署时都能很好地工作。

另请注意,IIS应用程序继承 web.config设置。所以,如果你有一个根网站

/root

和客户端应用

/root/client1
/root/client2
...

您可以将特定于客户端的配置设置放在每个特定于客户端的文件夹中的web.config中,并在根文件夹中设置web.config的全局设置。

答案 1 :(得分:1)

您可以将web.config内容移动到数据库并根据引用的域有条件地加载它吗?

    Select Case Request.Url.Host.ToLowerInvariant()
        Case "xyz.com", "www.xyz.com"
            'Load XYZ stuff'
        Case "abc.com", "www.abc.com"
            'Load ABC stuff'
        Case Else
            'Throw an error probably'
    End Select

更好的是,将您的域名存储在数据库中作为键,这样您就不必触摸代码。