现在,我们为我们的业务设置了类似的东西:
- App pool 1 - Site 1 - App pool 2 - Site 2 - App pool 3 - Site 3
对应于:
C:\inetpub\Site C:\inetpub\Site2 C:\inetpub\Site3strings) C:\inetpub\Site4
等等。 这很烦人,因为我们的代码需要在多个文件夹中维护,而且人们经常忘记这么做; 这是一个可以解决的问题,但我宁愿在解决scheme而不是过程中解决问题。 所有文件夹中的代码是相同的,只有web.config文件是不同的。
我们有我们的网站分裂的原因,尽pipe相同的.NET代码是这样的,我们需要不同的连接string到不同的服务器。 这样,无论哪个站点承载绑定获取stream量。 这就是我们如何处理负载均衡,这不是最好的方式,但是它完成了工作。
我宁愿MULTIPLE网站(与一个或多个应用程序池,无所谓)工作方式相同,但与一个共享代码文件夹function。 我需要的是一个解决scheme来处理基于IIS中的站点的连接string。 我没有太多的运气看虚拟目录,这似乎很简单,但我不认为是可能的,因为它需要一个web.config甚至知道在哪里寻找虚拟目录。
我确定我在这里错过了一些简单的东西,但是我需要一些帮助来达到这个目的:
C:\inetpub\SiteMaster (contains all .NET code) C:\inetpub\SiteMaster\Site1_Config (only needs to tell me the connection strings) C:\inetpub\SiteMaster\Site2_Config (only needs to tell me the connection strings) C:\inetpub\SiteMaster\Site3_Config (only needs to tell me the connection strings)
一种select是更改您的代码并使用一个集中的方法来访问连接string。 在那里取决于你的网站返回正确的string的网站。 你仍然可以把所有的信息放到一个单独的web.config中,但是主要的连接string不会被硬编码。 它将在稍后添加。
根据你的代码结构,这可能是很多工作。
更简单的方法是将连接string存储在根web.config而不是您的网站的web.config。
你将有一个单一的web.config的网站,但没有连接string在那里。
他们在:
C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ CONFIG \ web.config中
或者您的应用程序池正在使用的任何框架版本。
您可以使用位置节点为不同的站点指定不同的连接string:
<location path="Site"> <connectionStrings> <add connectionString="data source=.;integrated security=true;database=Site" name="SiteCS" /> </connectionStrings> </location> <location path="Site2"> <connectionStrings> <add connectionString="data source=.;integrated security=true;database=Site2" name="SiteCS" /> </connectionStrings> </location> <location path="Site3"> <connectionStrings> <add connectionString="data source=.;integrated security=true;database=Site3" name="SiteCS" /> </connectionStrings> </location>
您可以为其他IIS和Dot.NET设置做同样的事情。
缺点可能是您必须是pipe理员来更改此设置,并且如果您更改它们,服务器上的所有应用程序池可能会重新启动。