虚拟目录中的Web.config不会覆盖父网站的Web.config

时间:2013-03-22 00:01:02

标签: asp.net .net web-config iis-7.5 connection-string

我有一个网站,其中有一个虚拟目录,其中还包含一个网站,当我尝试从虚拟目录启动一个页面时,我收到一个IIS 7.5错误,该名称(来自连接字符串)已经是在集合中。在我将域用户添加为应用程序池中的标识之前,这不是问题。有谁知道为什么会这样?我的印象是子级应用程序的web.config默认覆盖了父级。而且,这一直有效,直到我添加了自定义标识。

  

页面上的错误是“解析器错误消息:已添加条目'dbname'。”

dbname在两个连接字符串中(即父目录和虚拟目录)。我无法删除其中一个连接字符串,因为虚拟目录仅用于测试目的,但在生产中它作为自己的网站运行。

2 个答案:

答案 0 :(得分:7)

无论应用程序如何,子web.config都不会覆盖父级。所有web.configs都会一直堆叠到主应用程序的根目录。为了使子应用程序文件夹能够使用已在使用的连接字符串密钥,必须首先删除它,或者必须清除所有连接字符串。如果您希望将它作为一个真正独立的应用程序作为子项添加到您的连接字符串:

<connectionStrings>
    <clear />
    <your connection string>
<connectionStrings>

如果您只想删除单个连接字符串,请使用以下命令:

<remove key="yourConnectionStringName" />

答案 1 :(得分:0)

@ u84six,

今天这件事发生在我身上。 我在同一个根网站上有一些网站和网络服务。根是默认的iis网站(默认网站),我认为它指向C:\ Inetpub \ wwwroot。它是一个开发环境。

在我阅读this answer之后,我发现我的一个网络服务是根网站(仍不确定是什么改变了它......也许是从2010年到2012年迁移后的视觉工作室)。该web服务正在使用冲突中的connectionString。我将路径改回C:\ Inetpub \ wwwroot \,一切都恢复正常。

也许类似的事情发生在你身上。