Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在解决方案中跨多个项目共享web.config?(ASP.NET)_Asp.net - Fatal编程技术网

是否可以在解决方案中跨多个项目共享web.config?(ASP.NET)

是否可以在解决方案中跨多个项目共享web.config?(ASP.NET),asp.net,Asp.net,我有一个由一个web应用程序和多个项目组成的解决方案,是否可以在所有解决方案中共享web应用程序中的配置 谢谢不,不可能。需要在每个网站的根文件夹中放置一个web.config文件。作为项目的构建步骤,您可以将一个公共web.config文件复制到每个站点的根目录中,以便ASP.NET在运行时可以找到它。我认为这是可能的,您可以尝试以下操作: 您可以将web.config文件复制到解决方案的根文件夹中。然后创建解决方案文件夹(不属于任何项目)并将文件添加到该文件夹中(通过添加现有项弹出菜单项)。

我有一个由一个web应用程序和多个项目组成的解决方案,是否可以在所有解决方案中共享web应用程序中的配置


谢谢

不,不可能。需要在每个网站的根文件夹中放置一个web.config文件。作为项目的构建步骤,您可以将一个公共web.config文件复制到每个站点的根目录中,以便ASP.NET在运行时可以找到它。

我认为这是可能的,您可以尝试以下操作:

您可以将
web.config
文件复制到解决方案的根文件夹中。然后创建解决方案文件夹(不属于任何项目)并将文件添加到该文件夹中(通过
添加现有项
弹出菜单项)。从网站中删除web配置。之后,您可以从两个web项目的弹出菜单中选择
添加现有项
,从解决方案根目录中选择web.config文件,然后单击
添加为链接
。之后,您将拥有指向web配置文件的链接,而不是解决方案中的真实链接


另一方面,我不确定在不同的项目之间共享web.config文件是否是一个好主意,因为通常web.config对每个单独的应用程序都有特定的条件

Web.config文件包含对更高的Web.config文件设置的级联覆盖。因此,如果您将web.config放在IIS的根目录中,或者调整.NET framework的machine.config或标准web.config中的设置(例如C:\Windows\Microsoft.NET\framework\v2.0.50727\config)

最好的例子可能是使用LocalSqlServer连接字符串。它在machine.config中定义为

<connectionStrings>
    <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;  
    Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;
    User Instance=true" providerName="System.Data.SqlClient"/>
</connectionStrings>

例如,如果您使用登录控件,并调试和请求ConnectionString,那么这个控件也将包括在内


因此,如果您需要多个应用程序共用的一些设置,请将它们放在层次结构中足够高的web.config文件中,最终放在machine.config中。

还有另一种选择,即放入预构建命令,将web.config从一个文件夹复制到目标文件夹。假设你有3个项目。项目A具有“master”web.config

在项目B和项目C中,设置预构建以将web.config复制到每个项目文件的根目录,覆盖这些文件夹中存在的web.config

这方面的主要问题是,您可能在每个被覆盖的web.config中都有特定的绑定


如果您的目标是复制appSettings和可能的ConnectionString,则可以执行与上述相同的预构建,但将appSettings和ConnectionString保存在web.config中的单独文件中,然后专门打开设置文件,并使用WebConfiguration Manager.OpenWebConfiguration方法自己读取内容。

我尝试这样做,但收到一条警告,这些文件不受源代码控制,因为它们位于绑定项目的根目录之外。然而,它们似乎是源代码控制的,并且更改/签入似乎正在工作。。。我不确定这个问题是否会在将来的某个时候困扰我。我尝试过这个方法,但VS告诉我,因为没有web.config调试,所以无法启用