41
votes

Symptoms

  • In IIS 7 and Dot Net 2.0 Integrated app pool: double clicking to view any web.config section results in an error dialog like this:

"There was an error while performing this operation....   Filename... web.config...    Error: There is a duplicate..."

  • Browsing to the URL displays: "Http 500.19" internal server error.. There is a duplicate... 'system.web.extensions/scripting/scriptResourceHandler' section defined...."

  • Running the app from VS 2008 an "Unable to start debugging on the web server..." dialog is displayed.

Infrastructure

  • Web server: IIS 7 running on Windows 7 x64
  • ASP.Net MVC2
  • Application pool: Dot Net 2.0 integrated
  • VS 2008

Things Tried

  • Checked to see if the problem was occurring in other IIS app directories on the same machine.
  • Removed and re-added the application in IIS.
  • Reverted to prior versions of the web.config file.
  • Checked out a last working version of the source code. Rebuilt the app, added a new app directory for it and tried to view web.config contents from IIS.
  • Looked for web.config files that might have duplicate sections in:
    • Inetpub root.
    • "C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config"
    • The "Views" subfolder of the ASP.Net MVC app.
  • Checked out source code to another dev machine. Setup IIS 7 app folder. No problem with Web.config.

Question

  • If the reason for this error is another web.config file where else should I look?
  • Are there other reasons for these symptoms?
7
are you using ajax and is your project directory a virtual directory ?Orhan Cinar
Did you try adding a <remove name=""/> block? That works depending on what it's complaining about. Especially if it's inheriting from underlying configs.jcolebrand

7 Answers

35
votes

Add this to the checklist.

  • Make sure that the machine.config you check is from the same Dot Net framework as the application pool your application is running under.

In my case the default application pools was changed from Dot Net 2.0 to Dot Net 4.0. This changed the root machine.config to the 4.0 version. This version contains the "scriptResourceHandler" section as well as others. Thus the duplicate section warning.

7
votes

If you're using DotNetOpenAuth library in your website AND your website is a .NET 4.0 app, then you need to make sure this line is NOT in your web.config

<section name="uri" type="System.Configuration.UriSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

I installed DNOA using NuGet, and it automatically added that line into my web.config file. So I had to remove it.

BTW people, if you using the built in (hella-crappy) visual studio development server (aka Cassini) .. you will not get this problem/issue. It's only when u move your code over to IIS7 express or full IIS7 will this issue occur.

So delete that single line and then have a happy dance.

3
votes

In IIS 7 change the Application Pools setting for the appPool named "Classic .NET AppPool" to V2.0. Do this by right clicking the Classic .NET AppPool and selecting "Basic Settings..." then reset the .NET Framework Version to V2.0.xxxxx. Recycle the app pool and restart the web site and it should work fine.

3
votes

The solution is to change your machine.config.

  1. Move the sections to the machine.config for ASP.NET 2.0
  2. Or Remove the sections from the machine.config for ASP.NET 4.0

Here the people from www.asp.net give a posible fix: http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes

Take a look :)

1
votes

My issue was quite different and this will depend on what section is a duplicate.

For instance I had a duplicate loggingConfiguration section which appear to be the result of the parent and child app using different versions of Microsoft Enterprise Library

0
votes

It might be worth opening up the applicationHost.config file:

C:\Windows\System32\inetsrv\config\applicationHost.config

Specifically, look for <location> tags that match the site name (there can be multiple entries) and see if there's duplicate scriptResourceHandler sections declared there. I'd also check the contents of <location path=""> as well.