web-dev-qa-db-ja.com

基本クラスにはフィールド「X」が含まれていますが、そのタイプ(System.Web.UI.ScriptManager)はコントロールのタイプ(System.Web.UI.ScriptManager)と互換性がありません

完全なエラーは

基本クラスにはフィールド 'ScriptManager1'が含まれていますが、そのタイプ(System.Web.UI.ScriptManager)はコントロールのタイプ(System.Web.UI.ScriptManager)と互換性がありません。

他の誰かがこのエラーに遭遇しましたか?

22
Collin Estes

これを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ランタイムがそれらのアセンブリの新しいバージョンを使用するように強制すると思います。

38
MGOwen

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>
7

上記の<runtime>セクションを追加すると、開発マシンとテストサーバーの問題が修正されますが、ライブサーバーの問題は修正されません。

web.configファイルにxmlns="http://schemas.Microsoft.com/.NetConfiguration/v2.0"のxmlns属性が含まれている場合、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ファイルの先頭から削除されていることを確認してください。

2
JimBGood

この問題は.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の使用も強制するようです。

1
Brice D

3.5から4.0へのアップデートで同様の問題がありました。私の場合、ルートWebサイトがあり、その下に仮想IISアプリケーションディレクトリがあります。

コードは、私の開発およびステージング領域で問題なく機能しました。

本番サーバーに入るとすぐにクラッシュしました。コードは同じでしたが。

私の解決策は、仮想ディレクトリを削除して再作成することでした。アプリケーションプールが正しいこと、およびasp.netのバージョンが正しいことを確認してください。 (私のサーバーはIIS6を搭載したWindows Server 2003です)。

もう1つの重要な注意-同じアプリケーションプールで複数のasp.netバージョンを実行することはできません。

0
jagdipa

私の場合、ビルドフレームワークを2.0から3.5に切り替えただけです。

これは、プロジェクト名(ソリューションエクスプローラーの上部)を右クリックして[プロパティページ]を選択することで実行できます。そこから、ビルドオプションを選択し、フレームワークを変更します。

Web.configと必要なすべての参照を更新する必要があります。

HTH

デイブ

0
Dave

非常によく似た問題がありました。開発プラットフォームは問題なく機能しましたが、サイトがテストサイトにデプロイされると、上記の元のポスターと同じメッセージで機能しなくなりました。ユーザーコントロールをグループ化するために、コントロールディレクトリの下にサブディレクトリがありました。問題は、その上のディレクトリにあるコントロールを使用しようとするサブディレクトリ内のコントロールにあるようです。最初の修正は、トップレベルコントロールをサブディレクトリに複製することでした。次に、並列兄弟サブディレクトリを作成し、そこにコントロールをパーキングするというアイデアに思いを馳せました。これにより、(a)コントロールのディレクトリ構造をフラット化したり、(b)さまざまなサブディレクトリに同じコントロールを複製したりすることなく、問題が解決しました。

したがって、私たちの解決策は、サブディレクトリのユーザーコントロールから親ディレクトリのコントロールを決して参照しないことです。

これがお役に立てば幸いです。

0
user186900

これは、プロジェクト参照をSystem.Web.Extensions 1.0.61025または他のバージョンに変更することでも解決できます。プロジェクト参照、Web構成、およびajaxツールキットがすべて同じバージョンに一致していることを確認してください。

0
Pankil

"Application is updatable"フラグを使用してコマンドラインからアプリケーションをプリコンパイルするときに、これと同じ問題が発生しました。

aspnet_compiler.exe -u

-uフラグを削除すると、この問題は解決しました。理由を聞かないで!

0
JordanC

「基本クラスにはフィールド 'ScriptManager1'が含まれていますが、そのタイプ(System.Web.UI.ScriptManager)はコントロールのタイプ(System.Web.UI.ScriptManager)と互換性がありません。」

他の誰かがこのエラーに遭遇しましたか?

具体的にはscriptmanagerではありませんが、そのようなエラーが何度か発生しました。基本的には、ページに1つのタイプのコントロールがある場合に発生します。そして、あなたがしばらくの間アイドルだったとしましょう。しかし、コントロールを削除して、同じIDを持つ別のコントロールをその場所に配置しました。つまり、それが発生する可能性があります。古いaspx.designer.csに関連または作成されていると思います。

問題を修正します。コントロールのIDの名前を変更するか、ソリューションを再構築する必要がありました。別の方法もあると思います。 aspxファイルの名前のaspx.designer.csファイルがあれば、そこで変更することもできます。

ここで回答を読んだ後、問題はIISが間違ったバージョンを使用してコントロールをコンパイルする方法にあると考えました。本番のweb.configを更新してこの問題を修正しました:<system.web> 追加 <httpRuntime targetFramework="4.5.1" />

0
Busch4Al

非常に似た問題。 「基本クラスにはフィールド「WebUserControl1」が含まれていますが、そのタイプ(common_WebUserControl)は...」マークアップファイルがCodeFile=からCodeBehind=に変更されました

0
Maslow