データベース クエリを実行する必要がある IIS 7.0 でホストされている WCF サービスがあります。これを行うための適切な権限を取得するために、次のようにサービス内で偽装しています。
コード
[OperationBehavior(Impersonation = ImpersonationOption.Allowed)]
public void MyOperation(int arg)
構成
<behavior name="ReceivingServiceBehavior">
<!-- Other behaviors -->
<serviceAuthorization impersonateCallerForAllOperations="true" />
</behavior>
接続してクエリを実行しようとすると、次のようになります。
例外 - System.IO.FileLoadException: ファイルを読み込めませんでした、または アセンブリ 'System.Transactions、バージョン = 2.0.0.0、カルチャ = ニュートラル、 PublicKeyToken=b77a5c561934e089' またはその依存関係の 1 つ。どちらか 必要な偽装レベルが提供されなかった、または提供された 偽装レベルが無効です。(HRESULT からの例外: 0x80070542) ファイル名: 'System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' ---> System.Runtime.InteropServices.COMException (0x80070542): 必要な偽装レベルが提供されていないか、提供された偽装レベルが無効です。(HRESULT からの例外: 0x80070542) System.Data.Linq.SqlClient.SqlConnectionManager.UseConnection (IConnectionUser ユーザー) で System.Data.Linq.SqlClient.SqlProvider.get_IsSqlCe() で System.Data.Linq.SqlClient.SqlProvider.InitializeProviderMode() で System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute (式クエリ) で System.Data.Linq.DataQuery`1.System.Collections.Generic.IEnumerable.GetEnumerator() で System.Linq.Buffer`1..ctor(IEnumerable`1 ソース) で System.Linq.Enumerable.ToArray[TSource] (IEnumerable`1 ソース) で Fourth.GHS.MessageRelay.RegistrationDBStorage.FindRegistration (SystemKey キー) で