私は、既存の ASP.NET Web アプリケーション内でホストされる新しい WCF Web サービスに取り組んでいます。サービスの .svc ファイルを実行しようとすると、アセンブリのファイルが見つからないという例外が発生します。
ファイルまたはアセンブリ 'System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。
問題は、このサービスがこの (特定の) アセンブリをどこにも参照していないように見えることです。System.IdentityModel をロードする参照プロジェクトが 1 つありますが、それはバージョン 3.0.0.0 を参照しています。実際、これらのプロジェクトはすべて 3.5 ランタイムを対象としており、4.0 アセンブリへの参照はどこにもありません。
<compilation>
Web アプリケーションの Web.config からのタグを次に示します。
<compilation debug="true">
<assemblies>
<clear/>
<add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Management, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Configuration.Install, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.EnterpriseServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<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>
</compilation>
注: この<clear />
タグは、トラブルシューティングの試みとして後で追加されました。行動への影響はないようでした。IIS構成マネージャーの「.NETコンパイル」タブで、System.Dataが2回追加されているというエラーが表示されたため、追加しましたが、明らかにこのファイルには含まれていません。追加<clear />
することで問題は解決しましたが、問題のある複製が Machine.config に見つからず、ベース Web サイト Web.config がないため、探していない場所があるのではないかと考えています。問題の原因になります。
サーバーは、.NET 3.5 SP1 を搭載した Server 2008 を実行しています。.NET 4.0 を使用した Windows 7 x64 にあるローカルの IIS インストールで、同じ問題が発生します ( System.Configuration
IdentityModel の代わりに使用しますが、それでも...)。
このアセンブリをロードしようとしている理由 (バージョン 3.0.0.0 のみが参照されている場合) と、それを修正するために何ができるかを知っている人はいますか?