在ASP.NET的运行时加载不同的web.config文件

时间:2009-07-17 08:47:38

标签: asp.net web-config

我有一个Web应用程序,我想用于多个业务领域。我不希望Web服务器上有多个Web应用程序代码实例。

举个例子:我有// MyWebSite / Virtual_Directory_1引用指向Database_A的c:\ Inetpub \ wwwroot \ MyWebApp 我想要的是如下设置另一个虚拟目录: // MyWebSite / Virtual_Directory_2引用指向Database_B的c:\ Inetpub \ wwwroot \ MyWebApp。

我想这样做是因为有单独的web.config文件,但我不知道如何实际执行此操作。

任何帮助将不胜感激。

由于 Parag

2 个答案:

答案 0 :(得分:0)

您可以将配置拆分为多个文件,也可以在IIS中为单个物理目录创建一个或多个虚拟目录。但是,这意味着您的Web应用程序可以使用2个Web应用程序实例,但无论它们是多个文件分开,都会使用相同的配置文件。

您还可以为Web应用程序中的每个子目录创建一个web.config文件,每个文件都可以覆盖其父web.config设置(并非所有内容都可以覆盖)。

要在运行对话框中创建虚拟目录,请键入inetmgr ... IIS管理器将打开。如果在客户端操作系统上,右键单击默认网站,然后选择新建,然后选择虚拟目录。将出现虚拟目录设置向导。按照它提供的简单步骤进行操作,最终为单个源目录创建2个虚拟目录。

如果您只想为每个Web应用程序实例提供不同的功能(即指向不同的数据库),请考虑使用web.config配置部分..并在应用程序设置中针对某个键保存数据库连接字符串并加载特定数据库考虑访问哪个资源的连接字符串。

查看this location上的文章:

答案 1 :(得分:0)

这样做的一种方法我想是拥有一个共享的web.config文件,然后在该配置文件中有多个与虚拟目录名匹配的连接字符串。

<connectionStrings>
    <add name="VirtualDir1" connectionString="data source=BLAHBLAH" />
    <add name="VirtualDir2" connectionString="data source=BLAHBLAH" />
</connectionStrings>

获取连接字符串时,只需参考:

ConfigurationManager.ConnectionStrings(Request.ApplicationPath).ConnectionString

虽然老实说我觉得花一点时间在构建项目上,并且使用自己的配置文件拥有多个代码副本,从长远来看,这将为您带来痛苦。