【问题标题】:Steps to Investigate Cause of Web.Config Duplicate Section调查 Web.Config 重复部分原因的步骤
【发布时间】:2011-01-29 08:09:46
【问题描述】:

症状

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

  • 浏览到 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 根目录。
    • “C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config”
    • ASP.Net MVC 应用程序的“Views”子文件夹。
  • 已将源代码签出到另一台开发机器。设置 IIS 7 应用程序文件夹。 Web.config 没问题。

问题

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

【问题讨论】:

  • 你在用ajax吗,你的项目目录是虚拟目录吗?
  • 您是否尝试添加 块?这取决于它抱怨的内容。特别是如果它是从底层配置继承的。

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


【解决方案1】:

将此添加到清单中。

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

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

【讨论】:

  • 似乎是这样。虽然这并不能解决问题,但这是一个好的开始。
  • 事实上,在使用 IIS 管理器的配置编辑器功能时,您可以选择任何标准配置设置并查看它的设置位置(最深路径)。您还可以通过更改“来自”下拉位置来检查层次结构中任何配置文件的设置。
【解决方案2】:

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

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

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

顺便说一句,如果您使用内置的(hella-crappy)Visual Studio 开发服务器(又名 Cassini)......您将不会遇到此问题/问题。只有当您将代码移至 IIS7 express 或完整的 IIS7 时才会出现此问题。

所以删除那一行,然后跳一段快乐的舞吧。

【讨论】:

【解决方案3】:

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

【讨论】:

  • 这不是一个很好的答案,但我赞成它,因为它仍然有用。就我而言,问题在于正在使用的应用程序池的 .NET 版本(不是“经典 .NET AppPool”)是错误的版本。
【解决方案4】:

解决方案是更改您的 machine.config。

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

来自 www.asp.net 的人在这里给出了一个可能的修复: http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes

看看:)

【讨论】:

    【解决方案5】:

    此 MS 故障排除可能也有帮助:http://support.microsoft.com/kb/942055

    【讨论】:

      【解决方案6】:

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

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

      【讨论】:

        【解决方案7】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2011-06-19
          • 1970-01-01
          • 2020-01-04
          • 2014-05-17
          • 2016-12-17
          • 1970-01-01
          • 2010-12-30
          • 2011-12-05
          • 1970-01-01
          相关资源
          最近更新 更多