【问题标题】:Error that causes intellisense failure in VS 2010 in web controls/pages在 Web 控件/页面中导致 VS 2010 中智能感知失败的错误
【发布时间】:2026-02-04 15:50:02
【问题描述】:

我有一个最近从 VS2008 转换为 VS2010 的 Web 应用程序项目,它不使用 .Net 4.0(而是 3.5),但每当我在页面或控件中打开标记时,它都会显示以下错误并随后禁用智能感知:

http://www.kompeller.co.uk/images/vs2010_error.png

我的 web.config 中的第 12 行如下所示:

 <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
    <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" />
      <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
      <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
      <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
    </sectionGroup>
  </sectionGroup>
</sectionGroup>

该应用程序配置为从我机器上的 IIS 运行,并且它没有父网站,因此它没有从另一个 web.config 继承。

我到处寻找解决方案,它把我逼到了墙角!

谢谢

【问题讨论】:

  • 根据我的阅读,您引用的那一行将是重复的行。在某处之前是否定义了 system.web.extensions?
  • 不,上面没有重复,只有另外两个完全不相关的部分。它似乎影响了我所有的项目。

标签: .net asp.net visual-studio-2010


【解决方案1】:

问题可能并不完全在第 12 行。错误非常清楚地表明 System.Web.Extensions 在 web.config 中定义了两次。只需搜索 System.Web.Extensions 的所有实例并删除重复项。

检查assemblies 部分并确保没有重复:

<compilation debug="true">
  <assemblies>
    <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Web.Extensions.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
    <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />      
      <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </assemblies>
</compilation>

检查pages/controls 部分并确保没有重复:

<pages>
    <controls>
        <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
        ...

查看httpHandlers 部分:

<httpHandlers>
    <remove verb="*" path="*.asmx"/>
    <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    ...

【讨论】:

  • 我已经这样做了,并且这些部分中没有重复项。有趣的是,这只是在我转换到 2010 之后才开始发生的,并且我在源代码管理中比较了版本,没有显着变化。
  • 您的回答提示我寻找其他事件,请在下方查看我的回答,谢谢!
  • 我告诉过你搜索 System.Web.Extensions 的任何实例,并替换重复的...
  • 不确定我是否跟随,用什么替换重复的?
  • 抱歉,我的意思是“删除重复项”。
【解决方案2】:

好的,我终于找到了,根据 James 的建议,副本可能不在该行,这是有问题的配置:

      <dependentAssembly>
    <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
    <bindingRedirect oldVersion="1.0.0.0-3.5.0.0" newVersion="3.5.0.0"/>
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
    <bindingRedirect oldVersion="1.0.0.0-3.5.0.0" newVersion="3.5.0.0"/>
  </dependentAssembly>

我删除了这个,一切都很好!

【讨论】:

    最近更新 更多