问题
I am creating a test version of an existing production site. A virtual web service application exists inside the site - and the two web configs have the same connection string.
There are no "clear" tags in the production web configs and the site and the web service co-exist merrily on two separate app pools.
On the test site however, every time I browse to the webservice URL I receive the Configuration Error "The entry 'ConnectionString' has already been added."
The test site and corresponding virtual application use their own separate app pools. Any ideas?
Thanks Jim
回答1:
Web.config inheritance happens even between different appPools.
If you want to stop this behavior, you should add the attribute enableConfigurationOverride="false"
to your appPool in the applicationHost.config file (located in %WINDIR%\System32\inetsrv\Config and %WINDIR%\SysWOW64\inetsrv\config) as in the following example:
<add name="MyAppPool" autoStart="true" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" enableConfigurationOverride="false">
<processModel identityType="NetworkService" />
</add>
Matteo
回答2:
I think the problem is related that they are one site inside the other. Like a Website with a Virtual Directory inside.
In this case... the Virtual Directory web.config is "inheriting" the parent web.config
Here you can see details of how to solve this: How to stop inheritance of <configSections>in Web.Config
Other options: https://stackoverflow.com/a/367372/7720
If the problem is in other parts of your web.config (not in the sections) you can just wrap the conflicting part with <location path="." inheritInChildApplications="false">
.
Other option could be let the webservice grab the connection from the website.
来源:https://stackoverflow.com/questions/23367347/entry-has-already-been-added-two-separate-app-pools