5

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

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

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

4

2 回答 2

7

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

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

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

<remove key="yourConnectionStringName" />
于 2013-03-22T00:08:47.920 回答
0

@u84六,

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

在我阅读了这个答案之后,我发现我的一个网络服务是根网站(仍然不确定是什么改变了它......也许是从 2010 年迁移到 2012 年之后的 Visual Studio)。该网络服务正在使用冲突的连接字符串。我将路径改回 C:\Inetpub\wwwroot\,一切正常。

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

于 2014-01-06T14:36:56.567 回答