代码之家  ›  专栏  ›  技术社区  ›  Collin Estes

基类包含字段“x”,但其类型(System.Web.UI.ScriptManager)与控件类型(System.Web.UI.ScriptManager)不兼容。

  •  21
  • Collin Estes  · 技术社区  · 15 年前

    完全错误是

    基类包含字段“scriptmanager1”,但其类型(system.web.ui.scriptmanager)与控件类型(system.web.ui.scriptmanager)不兼容。

    还有人遇到这个错误吗?

    12 回复  |  直到 15 年前
        1
  •  37
  •   MGOwen    15 年前

    我通过将此添加到web.config来修复它:

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
                    <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
    

    我相信它强制.NET运行时使用这些程序集的新版本。

        2
  •  7
  •   Daniel Ballinger    15 年前

    我在将Web应用程序从.NET 2.0升级到3.5时遇到了这个问题。

    检查您的web.config是否为.NET 3.5正确设置。我添加/更改了以下内容:

      <configSections>
        <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>
      </configSections>
    
          <assemblies>
            <!--<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>-->
            <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"/>
          </assemblies>
    
       <httpHandlers>
            <remove verb="*" path="*.asmx"/>
            <add verb="*" path="*.asmx" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
            <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
       <httpHandlers>
    
    
    
            <pages enableSessionState="true" validateRequest="true">
                <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"/>
                </controls>
            </pages>
    
        <httpModules>
      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </httpModules>
    

        3
  •  2
  •   Nathan Smith Hilborn    7 年前

    添加 <runtime> 上面的部分修复了我们的开发机器和测试服务器上的问题,但没有修复我们的实时服务器。

    结果是如果你的 web.config 文件包含的xmlns属性 xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0" 然后你会得到一个GAC冲突:

    BAD.web.config
    <?xml version="1.0"?>
    <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
    etc
    

    但Devt机器的这个版本很好:

    GOOD.web.config
    <?xml version="1.0"?>
    <configuration>
    etc
    

    因此,请确保从您的 Web.CONFIG 文件。

        4
  •  1
  •   Brice D    14 年前

    您还可以在.vbproj文件中解决此问题(在我的情况下)。检查这些条目:

    <Reference Include="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
      <RequiredTargetFramework>3.5</RequiredTargetFramework>
    </Reference>
    <Reference Include="System.Web.Extensions.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
      <RequiredTargetFramework>3.5</RequiredTargetFramework>
    </Reference>
    

    这似乎也迫使使用3.5版本的DLL。

        5
  •  0
  •   user186907    15 年前

    我们有一个非常相似的问题。开发平台工作得很好,但是一旦将站点部署到测试站点上,它就会中断,并显示与上面的原始海报相同的消息。 我们在controls目录下有子目录,可以将用户控件分组在一起。问题似乎是子目录中的控件试图使用它上面目录中的控件。我们的第一个解决方案是将顶级控件克隆到子目录。 然后我们想到创建一个并行的兄弟目录,并将控件停在那里。这解决了这个问题,无需采取(a)扁平化控件目录结构,或(b)在不同的子目录中克隆相同的控件。

    所以我们的解决方案是永远不要从子目录中的用户控件引用父目录中的控件。

    我希望这能有所帮助。

        6
  •  0
  •   Pankil    15 年前

    这也可以通过将项目引用更改为System.Web.Extensions 1.0.61025或其他版本来解决,确保项目引用、Web配置和Ajax工具包都与同一版本匹配。

        7
  •  0
  •   JordanC    14 年前

    当使用“application is updatable”标志从命令行预编译应用程序时,我们遇到了同样的问题:

    aspnet_compiler.exe -u
    

    移除-u标志解决了这个问题。别问我为什么!

        8
  •  0
  •   Maslow    13 年前

    非常相似的问题。”基类包含字段“webUserControl1”,但其类型(common_webUserControl)是…“更改标记文件自” CodeFile= CodeBehind=

        9
  •  0
  •   Dave    13 年前

    在我的例子中,只是将构建框架从2.0切换到了3.5。

    这是通过右键单击项目名称(解决方案资源管理器顶部)并选择“属性页”来完成的。从中选择构建选项并更改框架。

    它应该更新web.config和所有需要的引用。

    高温高压

    戴夫

        10
  •  0
  •   jagdipa    12 年前

    从3.5更新到4.0也有类似的问题。在我的例子中,有一个根网站和虚拟的IIS应用程序目录。

    在我的开发和准备领域,代码工作得很好。

    它一进入生产服务器,就崩溃了。即使代码是相同的。

    我的解决方案是删除虚拟目录并重新创建它。确保应用程序池正确,并且ASP.NET版本正确。(我的服务器是带有iis6的Windows Server 2003)。

    另一个重要注意事项-不能在同一应用程序池中运行多个ASP.NET版本。

        11
  •  0
  •   Alexander Ryan Baggett    11 年前

    “基类包括字段'scriptmanager1',但它的类型 (system.web.ui.scriptmanager)与控件类型不兼容 (system.web.ui.scriptmanager)。”

    还有人遇到这个错误吗?

    我曾多次遇到过这种错误,尽管脚本管理器并没有特别指出。基本上,当您在页面上有一个类型的控件时,就会发生这种情况。假设你有一段时间无所事事。但随后删除了该控件,并将另一个控件放在具有相同ID的位置上,也就是说,它可以发生的时间。我认为它与过时的aspx.designer.cs有关或由其创建。

    解决问题。我要么更改控件ID的名称,要么重新生成解决方案。我想还有别的办法。我认为,如果您有一个ASPX.designer.cs文件名为ASPX文件,您也可以在其中更改它。

        12
  •  0
  •   Busch4Al    6 年前

    在阅读了这里的答案之后,我发现问题在于IIS是如何使用错误的版本编译控件的。我通过更新production web.config修复了此问题: 下 <system.web> 添加 <httpRuntime targetFramework="4.5.1" />