多个网站,一个通用代码库和不同的配置文件

时间:2011-05-24 13:26:46

标签: c# asp.net iis iis-7

我在IIS中有两个网站,如

http://domainA.com 
http://domainB.com 

我想对这些网站使用相同的代码,但使用不同的web.config文件。这可能吗?我在web.config文件中存储数据库连接字符串等,应用程序中的所有其他代码都是相同的。

我尝试了一些不同的approches,创建了像

这样的文件夹结构
-Root
  - Domain A
    - web.config for domain A
    - Code
      - Virtual Directory to Source Code  
  - Domain B
    - web.config for domain B
    - Code 
      - Virtual Directory to Source Code
- Source Code

然后,我会将域A的网站指向“根/域A”,将域B指向“根/域B”,但问题是代码必须向下一级访问,例如

http://domainA.com/Code/
http://domainB.com/Code/

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我的答案基于您编写自定义代码而不是使用现成的解决方案(如DNN或SharePoint)。

为保持公共代码库而想到的一个解决方案是在数据库而不是web.config中维护特定于网站的配置设置。通过使用一组名称/值对,可以使数据库结构保持动态。您当然需要在应用程序的设计中考虑到这一点,并在数据库中对其进行规划。这为您提供了仅具有单个代码库以及单个web.config的优势。如果需要为每个站点在单独的数据库中维护内容,那么与这些内容数据库的连接字符串信息可以是配置数据库中的一个名称/值对。

您甚至可以通过在IIS中为所有域使用单个网站来进一步采取此步骤(除非您将使用SSL,在这种情况下,单独的IIS站点会更好)。您需要向网站添加主机标头,然后在代码中查找主机标头,以确定要使用的设置和要提供的内容。您将无法创建单独的应用程序池,因此如果这对您的情况来说是一个可行的选项,则应检查您的要求。

这实际上与DNN和SharePoint的工作方式类似,但也可以在自定义应用程序中完成。