调查Web.Config重复部分的原因的步骤
症状
- 在IIS 7和DotNet 2.0集成应用程序池中:双击查看任何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。
- 将部分移动到ASP.NET 2.0的machine.config
- 或从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="">
的内容。