完全なエラーは
基本クラスにはフィールド 'ScriptManager1'が含まれていますが、そのタイプ(System.Web.UI.ScriptManager)はコントロールのタイプ(System.Web.UI.ScriptManager)と互換性がありません。
他の誰かがこのエラーに遭遇しましたか?
これを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ランタイムがそれらのアセンブリの新しいバージョンを使用するように強制すると思います。
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>
上記の<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
ファイルの先頭から削除されていることを確認してください。
この問題は.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の使用も強制するようです。
3.5から4.0へのアップデートで同様の問題がありました。私の場合、ルートWebサイトがあり、その下に仮想IISアプリケーションディレクトリがあります。
コードは、私の開発およびステージング領域で問題なく機能しました。
本番サーバーに入るとすぐにクラッシュしました。コードは同じでしたが。
私の解決策は、仮想ディレクトリを削除して再作成することでした。アプリケーションプールが正しいこと、およびasp.netのバージョンが正しいことを確認してください。 (私のサーバーはIIS6を搭載したWindows Server 2003です)。
もう1つの重要な注意-同じアプリケーションプールで複数のasp.netバージョンを実行することはできません。
私の場合、ビルドフレームワークを2.0から3.5に切り替えただけです。
これは、プロジェクト名(ソリューションエクスプローラーの上部)を右クリックして[プロパティページ]を選択することで実行できます。そこから、ビルドオプションを選択し、フレームワークを変更します。
Web.configと必要なすべての参照を更新する必要があります。
HTH
デイブ
非常によく似た問題がありました。開発プラットフォームは問題なく機能しましたが、サイトがテストサイトにデプロイされると、上記の元のポスターと同じメッセージで機能しなくなりました。ユーザーコントロールをグループ化するために、コントロールディレクトリの下にサブディレクトリがありました。問題は、その上のディレクトリにあるコントロールを使用しようとするサブディレクトリ内のコントロールにあるようです。最初の修正は、トップレベルコントロールをサブディレクトリに複製することでした。次に、並列兄弟サブディレクトリを作成し、そこにコントロールをパーキングするというアイデアに思いを馳せました。これにより、(a)コントロールのディレクトリ構造をフラット化したり、(b)さまざまなサブディレクトリに同じコントロールを複製したりすることなく、問題が解決しました。
したがって、私たちの解決策は、サブディレクトリのユーザーコントロールから親ディレクトリのコントロールを決して参照しないことです。
これがお役に立てば幸いです。
これは、プロジェクト参照をSystem.Web.Extensions 1.0.61025または他のバージョンに変更することでも解決できます。プロジェクト参照、Web構成、およびajaxツールキットがすべて同じバージョンに一致していることを確認してください。
"Application is updatable"フラグを使用してコマンドラインからアプリケーションをプリコンパイルするときに、これと同じ問題が発生しました。
aspnet_compiler.exe -u
-uフラグを削除すると、この問題は解決しました。理由を聞かないで!
「基本クラスにはフィールド '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" />
非常に似た問題。 「基本クラスにはフィールド「WebUserControl1」が含まれていますが、そのタイプ(common_WebUserControl)は...」マークアップファイルがCodeFile=
からCodeBehind=
に変更されました