调查Web.Config重复部分的原因的步骤

症状

  • 在IIS 7和DotNet 2.0集成应用程序池中:双击查看任何web.config部分导致出现如下错误对话框:

“执行此操作时发生错误.... Filename ... web.config ...错误:存在重复...”

  • 浏览到URL显示: “Http 500.19”内部服务器错误..有一个重复的…'system.web.extensions /脚本/ scriptResourceHandler'部分定义….“

  • 从VS 2008运行应用程序,显示“无法在Web服务器上启动debugging…”对话框。

基础设施

  • Web服务器:在Windows 7 x64上运行的IIS 7
  • ASP.Net MVC2
  • 应用程序池:Dot Net 2.0集成
  • VS 2008

事情尝试

  • 检查该问题是否出现在同一台机器上的其他IIS应用程序目录中。
  • 删除并重新添加IIS中的应用程序。
  • 恢复到web.config文件的先前版本。
  • 检出了源代码的最后一个工作版本。 重新构build应用程序,为其添加一个新的应用程序目录,并尝试从IIS中查看web.config内容。
  • 查找可能有重复部分的web.config文件:
    • Inetpub根。
    • “C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 \ CONFIG \ machine.config中”
    • ASP.Net MVC应用程序的“Views”子文件夹。
  • 检查了源代码到另一个开发机器。 设置IIS 7应用程序文件夹。 Web.config没有问题。

  • 如果这个错误的原因是另一个web.config文件,我应该看看哪里?
  • 这些症状还有其他原因吗?

将其添加到清单。

  • 确保您检查的machine.config来自与您的应用程序正在运行的应用程序池相同的DotNet框架。

在我的情况下,默认的应用程序池从Dot Net 2.0更改为Dot Net 4.0。 这将根machine.config更改为4.0版本。 该版本包含“scriptResourceHandler”部分以及其他部分。 因此重复部分警告。

如果您在您的网站中使用DotNetOpenAuth库,并且您的网站是.NET 4.0 app ,那么您需要确保此行不在您的web.config

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

我使用NuGet安装了DNOA ,并自动将该行添加到我的web.config文件中。 所以我不得不删除它。

顺便说一句,如果你使用内置(hella-crappy)visual studio开发服务器(又名卡西尼)..你不会得到这个问题/问题。 只有当你把你的代码转移到IIS7 express或完整的IIS7时,这个问题才会发生。

所以删除那一行,然后有一个快乐的舞蹈。

在IIS 7中,将名为“Classic .NET AppPool”的appPool的“应用程序池”设置更改为V2.0。 通过右键单击Classic .NET AppPool并select“基本设置…”,然后将.NET Framework版本重置为V2.0.xxxxx。 回收应用程序池并重新启动网站,它应该工作正常。

解决办法是改变你的machine.config。

  1. 将部分移动到ASP.NET 2.0的machine.config
  2. 或从ASP.NET的machine.config中删除部分

这里来自www.asp.net的人给出了一个可行的解决方法: http : //www.asp.net/learn/whitepapers/aspnet4/breaking-changes

看一看 :)

这个MS疑难解答可能也有帮助: http : //support.microsoft.com/kb/942055

我的问题是完全不同的,这将取决于哪个部分是重复的。

例如,我有一个重复的loggingConfiguration部分,这似乎是使用不同版本的Microsoft Enterprise Library的父应用程序和子应用程序的结果

这可能是值得打开applicationHost.config文件:

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

具体来说,查找与站点名称匹配的<location>标签(可以有多个条目),并查看是否存在重复的scriptResourceHandler部分。 我也会检查<location path="">的内容。