Базовый класс включает поле 'X', но его тип (System.Web.UI.ScriptManager) несовместим с типом элемента управления (System.Web.UI.ScriptManager)

Полная ошибка

Базовый класс включает поле ScriptManager1, но его тип (System.Web.UI.ScriptManager) несовместим с типом элемента управления (System.Web.UI.ScriptManager).

Кто-нибудь еще сталкивался с этой ошибкой?

Ответов (12)

Решение

Мне удалось исправить это, добавив это в 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.0 на 3.5.

Это можно сделать, щелкнув правой кнопкой мыши имя проекта (в верхней части проводника решений) и выбрав «Страницы свойств». оттуда выберите вариант сборки и измените структуру.

Он должен обновить web.config и все необходимые ссылки.

HTH

Дэйв

Были аналогичные проблемы при обновлении с 3.5 до 4.0. В моем случае есть корневой веб-сайт и виртуальные каталоги приложений IIS под ним.

Код отлично работал в моих областях разработки и подготовки.

Как только он попал на рабочий сервер, он рухнул. Хотя код был таким же.

Мое решение заключалось в том, чтобы удалить виртуальный каталог и воссоздать его. Убедитесь, что пул приложений правильный, а версия asp.net верна. (мои серверы - Windows Server 2003 с IIS6).

Еще одно важное замечание - вы не можете запускать несколько версий asp.net в одном пуле приложений.

«Базовый класс включает поле ScriptManager1, но его тип (System.Web.UI.ScriptManager) несовместим с типом элемента управления (System.Web.UI.ScriptManager)».

Кто-нибудь еще сталкивался с этой ошибкой?

У меня была такая ошибка несколько раз, но не только со сценарием. В основном это происходит, когда у вас есть элемент управления одного типа на странице. Допустим, вы какое-то время бездельничали. Но затем вы удалили элемент управления и поставили на его место другой с тем же идентификатором, вот тогда это может произойти. Я считаю, что он связан с устаревшим aspx.designer.cs или создан им.

Решить проблему. Мне пришлось либо изменить имя идентификатора элемента управления, либо перестроить решение. Думаю, есть и другой способ. Я думаю, что если у вас есть файл aspx.designer.cs с именем файла aspx, вы также можете изменить его там.

Прочитав здесь ответы, я понял, что проблема в том, как IIS компилирует элементы управления, используя неправильную версию. Я исправил эту проблему, обновив рабочий файл web.config: Под <system.web> добавлением <httpRuntime targetFramework="4.5.1" />

Я столкнулся с этой проблемой при обновлении веб-приложения с .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>

У нас была очень похожая проблема. Платформа разработки работала нормально, но как только сайт был развернут на сайте тестирования, он сломался с тем же сообщением, что и исходный плакат выше. У нас были подкаталоги в нашем каталоге элементов управления для группирования пользовательских элементов управления вместе. Проблема заключалась в том, что элемент управления в подкаталоге пытался использовать элемент управления в каталоге над ним. Нашим первым исправлением было клонирование элемента управления верхнего уровня в подкаталог. Затем мы пришли к идее создания параллельного дочернего подкаталога и размещения в нем элемента управления. Это устранило проблему без необходимости прибегать к (а) выравниванию структуры каталогов элементов управления или (б) клонированию одного и того же элемента управления в различных подкаталогах.

Поэтому наше решение - никогда не ссылаться на элемент управления в родительском каталоге из пользовательского элемента управления в подкаталоге.

Надеюсь, это поможет.

Эту проблему также можно решить, изменив ссылку на проект на System.Web.Extensions 1.0.61025 или другую версию. Убедитесь, что ссылка на проект, веб-конфигурация и инструментарий ajax соответствуют одной и той же версии.

Добавление <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

Поэтому убедитесь, что ссылка 2.0 удалена из верхней части web.config файла.

У нас была такая же проблема при предварительной компиляции нашего приложения из командной строки с использованием флага «Приложение обновляется»:

aspnet_compiler.exe -u

удаление флага -u решило эту проблему. Не спрашивайте меня, почему!

Вы также можете решить эту проблему в файле .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>

Похоже, это также заставляет использовать библиотеки DLL версии 3.5.

Очень похожая проблема. «Базовый класс включает поле 'WebUserControl1', но его тип (common_WebUserControl) ...» изменил файлы разметки с CodeFile= на CodeBehind=