Asp.net 相同的应用程序和目录,但不同的web.config文件?

Asp.net 相同的应用程序和目录,但不同的web.config文件?,asp.net,iis,Asp.net,Iis,我怀疑这是可能的,但我们的一个web应用程序被客户使用,因此他们有一个实时/测试数据库。目前,更新必须转到这两个文件夹,因为这两个文件夹都有一个目录设置,并且web.config文件指向live或test 是否有某种方法可以只使用IIS中的一个目录,而使用两个web应用程序,每个应用程序使用不同的web.config文件或类似文件,因此只需要更新一个位置?可以,但必须以稍微不同的方式维护。您没有告诉我们的是:connectionStrings和appSettings中是否是唯一使用配置值分隔的位

我怀疑这是可能的,但我们的一个web应用程序被客户使用,因此他们有一个实时/测试数据库。目前,更新必须转到这两个文件夹,因为这两个文件夹都有一个目录设置,并且web.config文件指向live或test


是否有某种方法可以只使用IIS中的一个目录,而使用两个web应用程序,每个应用程序使用不同的web.config文件或类似文件,因此只需要更新一个位置?

可以,但必须以稍微不同的方式维护。您没有告诉我们的是:
connectionStrings
appSettings
中是否是唯一使用配置值分隔的位置?或者还有其他区别吗

然后,您确实需要从一个单独的配置文件中加载这些值,该文件未被现有配置文件引用,也未使用
System.Configuration.ConfigurationManager
或其任何名称空间/实用程序加载。下一步是使用传入的URL来隔离设置类使用的数据,以了解要加载的两个数据点中的哪一个


否则,如果您以这种方式编写应用程序,这是完全有效的(只是有点违背了我们在世界其他地方的习惯)。

根据您的数据库连接系统,您可以基于用户设置而不是基于web.config为其提供连接字符串?必须有某种方法来决定用户想要使用哪个数据库,这可以是简单的按钮或下拉列表来选择,或者让系统有两个文件夹,但使用URL路由使它们都指向相同的文件。然后,当您实例化数据库连接时,您可以提供正确的connectionstring,然后就可以设置了

编辑:聊天后,解决方案是在
web.config
中放置两个连接字符串,一个用于测试数据库,另一个用于生产。然后添加路由,假装两个文件夹仍然存在,基本思路如下:

routes.Add(new Route("{folder}/{page}", new PageRouteHandler("~/{page}")));
最后是一个函数,用于根据路由值:
Request.RequestContext.RouteData.values[“folder”]
中的
文件夹
值决定要使用哪个连接字符串,以及一个全局重构以使用此动态连接字符串,而不是硬编码的连接字符串


对于“多个”web.configs,您可以将一个配置节指定给一个文件路径,请参阅,但我不确定这是否适用于连接字符串

例如:

<configuration>
   <location path="Logon.aspx">
      <system.web>
         <authorization>
            <allow users="?"/>
         </authorization>
      </system.web>
   </location>
</configuration>


它们位于连接文件中,基本上有两个目录,两个目录的文件完全相同,但连接不同StringNope,无法使用“内置库”完成。Microsoft没有为此编写应用程序结构,因此,平心而论,您只需编写自己的加载程序。谢谢,但需要连接来自web。配置您不能指定多个连接字符串路径,不。它必须位于应用程序本身中,在文件系统中不能为负。如果连接字符串必须来自web.config,则这不一定是问题。您可以从web.config手动读取ConnectionString,并显式地将它们提供给数据库连接。添加两个连接字符串,例如
ConnectionLive
ConnectionTest
,并使用访问它们。我意识到我可以添加另一个连接字符串,但如何定义该特定应用程序始终使用的连接字符串?此外,由于我的应用程序中的所有内容都在寻找特定的连接字符串,因此更改以检查所有位置的必要连接将非常耗时。请使用一种中心方法创建数据库连接,并更新应用程序以始终使用此连接。这是一次重构,但肯定是处理此问题的最佳方法。