我知道至少有两种方法可以利用web.config文件:
configSource
属性 - here is a good blog entry。file
属性,可让您指向具有相对路径的外部文件。 MSDN documentation on the appSettings element。现在,我的问题是两种方法都能很好地仅适用于物理路径。但我需要解决位于虚拟目录中的配置文件。
我可以使用哪种方法将配置资源放在虚拟目录中?
注意:我想这样做,因为我在同一台服务器上(以及许多服务器上)有多个我的Web应用程序实例。为了保持部署简单和干净,我想为所有文件(aspx,ascx,图像,css,js等)保留一个目录,并将IIS中的Web应用程序指向不同的客户(=域,https等)到此单个目录。在每个IIS Web中,我都会有一个名为“custom”的虚拟目录,它指向每个Web的不同文件夹。
更新:我想指出这个虚拟目录“custom”不适合包含继承的web.config - 该web.config仅对自定义文件夹有效。不包含aspx / ascx文件。
答案 0 :(得分:2)
我有相同的场景,在阅读完帖后,我意识到asp.net不会因为各种安全原因而让你这样做。
因此我转向操作系统找到Linux软链接函数的等价物,这反过来又让我从sysinternals转到Junction utility。这可以创建一个目录,实际上是该卷上的任何其他目录,而asp.net无法区分,所以很高兴加载实际上不在您网站的子目录中的配置部分。适合我:)
答案 1 :(得分:1)
虚拟目录可以设置为应用程序,您可以在那里放置另一个web.config。
它将继承父配置的任何更改,您可以在其中添加自定义设置。
答案 2 :(得分:1)
我当时想要做同样的事情,但它不起作用,所以我决定反过来,因为你知道web.config可以继承,所以我把IIS指向一个包含客户端配置的文件夹(连接字符串) ,文件路径等)文件和网站文件我把它们放在虚拟目录中,其余的是webconfig(它需要加载dll和其他应用程序文件) 所以基本上我可以使用网站文件来多个客户端和客户端使用自己的数据库连接字符串和其他特定的客户端设置。