当前位置:编程学习 > C#/ASP.NET >>

当需要部署多个站点共用一个应用程序时,如何拆分Web.Config文件?

我只有一个应用程序app,其在服务器文件系统的物理位置为C:\app

我希望能在iis中部署三个站点a.com、b.com、c.com,这三个站点都指向C:\app
同时我希望这三个站点能配置成不同的Web.Config,比如:

a.com中我希望配置为
<configuration>
  <system.web>
    <authentication mode="Forms">
      <forms name="a.com" timeout="4000" />
    </authentication>
  </system.web>
  <appSettings>
    <add key="ConnectionString" value="a.com"/>
  </appSettings>
</configuration>

b.com中我希望配置为
<configuration>
  <system.web>
    <authentication mode="Forms">
      <forms name="b.com" timeout="100" />
    </authentication>
  </system.web>
  <appSettings>
    <add key="ConnectionString" value="b.com"/>
  </appSettings>
</configuration>

c.com中我希望配置为
<configuration>
  <system.web>
    <authentication mode="Forms">
      <forms name="c.com" timeout="2000" />
    </authentication>
  </system.web>
  <appSettings>
    <add key="ConnectionString" value="c.com"/>
  </appSettings>
</configuration>

请问各位大能,可有好的解决方案?



注:
之所以不复制使用多个物理路径,是希望维护时只更新一套应用程序,同时减轻线上测试的工作量
这里只是举例三个站点,事实上需要部署的站点数远不止三个 --------------------编程问答-------------------- 一个app对应一个Web.config,这个是不能变的,能变的就是你可以在一个Web.config中配置三个连接串,用不同的标识就可以。 --------------------编程问答--------------------
引用 1 楼 lhqdyy9 的回复:
一个app对应一个Web.config,这个是不能变的,能变的就是你可以在一个Web.config中配置三个连接串,用不同的标识就可以。


这点我清楚
我现在有方案能将appSettings中的内容拆分出来成为多个不同的config文件,但我不知道如何拆分system.web中的内容
其实我想问的关键点就是,是否有方案能将system.web中的部分内容拆分出来形成多个单独的config文件,当进入不同的站点时,根据站点名找到对应config文件的配置 --------------------编程问答-------------------- web.config是以目录为单位的,
可以根据他控制的内容,作调整,如1楼的方案
另外,可以看下这篇,
分割
http://www.cnblogs.com/ASPNET2008/archive/2008/12/29/1361401.html --------------------编程问答-------------------- 同意1楼的 --------------------编程问答-------------------- 每天回帖,拿10积分,顶一个吧 --------------------编程问答--------------------
引用 3 楼 jiuhexuan 的回复:
web.config是以目录为单位的,
可以根据他控制的内容,作调整,如1楼的方案
另外,可以看下这篇,
分割
http://www.cnblogs.com/ASPNET2008/archive/2008/12/29/1361401.html


你应该是没有理解我的意思,我要的是“多个站点指向同一应用程序”,而不是“多个站点指向同一应用程序的不同子项目”
另外,你提供的那篇文章并不能解决我的问题,正如我回复1楼的,我希望能有方案拆分Web.Config中的system.web配置节 --------------------编程问答-------------------- 想到了一个在部署时的方案,但是并不完美,希望有大能能给出更好的方案

部署时,服务器文件系统的目录结构为:
C:\wwwroot
      |------app
      |              |------Pages
      |              |------UserControls
      |              |------JS
      |              |------Images
      |              |------Skins
      |------a.com
      |              |------bin
      |              |------default.aspx
      |              |------global.asax
      |              |------web.config
      |------b.com
      |              |------bin
      |              |------default.aspx
      |              |------global.asax
      |              |------web.config
      |------c.com
                     |------bin
                     |------default.aspx
                     |------global.asax
                     |------web.config

IIS中的站点部署结构为(其中[*]表示未创建应用程序的虚拟目录):
Web Sites
      |------a.com(指向C:\wwwroot\a.com)
      |              |------bin
      |              |------[*]Pages(指向C:\wwwroot\app\Pages)
      |              |------[*]UserControls(指向C:\wwwroot\app\UserControls)
      |              |------[*]JS(指向C:\wwwroot\app\JS)
      |              |------[*]Images(指向C:\wwwroot\app\Images)
      |              |------[*]Skins(指向C:\wwwroot\app\Skins)
      |------b.com
      |              |------bin
      |              |------[*]Pages
      |              |------[*]UserControls
      |              |------[*]JS
      |              |------[*]Images
      |              |------[*]Skins
      |------c.com
                     |------bin
                     |------[*]Pages
                     |------[*]UserControls
                     |------[*]JS
                     |------[*]Images
                     |------[*]Skins

该方案不完美处在于:
1、bin目录貌似不能如同其他目录般使用虚拟目录来部署,这样导致在维护时势必要对每个站点的bin目录做更新(应用程序根目录下的*.aspx因数量很少,且少有改动,所以分站点放置完全能够接受)
2、不确定该方案是否会有问题
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,