调查Web原因的步骤.Config Duplicate Section

时间:2010-03-19 06:14:57

标签: asp.net asp.net-mvc iis-7

症状

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

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

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

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

基础设施

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

尝试的事情

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

问题

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

7 个答案:

答案 0 :(得分:35)

将其添加到核对清单。

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

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

答案 1 :(得分:7)

如果您在自己的网站中使用DotNetOpenAuth库并且您的网站是.NET 4.0 app,那么您需要确保{{1}中的这一行 }}

web.config

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

BTW人,如果你使用内置(hella-crappy)视觉工作室开发服务器(又名卡西尼)......你将不会遇到这个问题/问题。只有当您将代码移动到IIS7 express或完整IIS7时才会出现此问题。

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

答案 2 :(得分:3)

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

答案 3 :(得分:3)

解决方案是更改machine.config。

  1. 将这些部分移动到适用于ASP.NET 2.0的machine.config
  2. 或者从ASP.NET 4.0的machine.config中删除部分
  3. 来自www.asp.net的人们给出了一个可行的解决方案: http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes

    看一看:)

答案 4 :(得分:1)

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

答案 5 :(得分:1)

我的问题非常不同,这取决于哪个部分是重复的。

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

答案 6 :(得分:0)

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

  

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

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