0

複数の WCF サービスをホストするアプリケーションがあります。完全に機能するカスタム ServiceAuthorizationManager を作成しました。ユーザー名とパスワードを取得するために、OperationContext.IncomingMessageHeaders のいくつかの要素を調べます。これは、プラットフォームに組み込まれているものを使用できない環境のいくつかの制限を克服するためでした. マネージャーは、いくつかの必要なカスタム オブジェクトを含むカスタム IPrincpal を作成し、現在実行中のスレッドに配置して、後で WCF ビジネス ロジックで使用できるようにします。これはうまくいっています。

問題は、ワークフローである WCF サービスがあり、そこで同じメカニズムを使用する必要があることです。Manager は正しく呼び出されていますが、Thread の currentPrincpal を実行すると、カスタム プリンシパルではなく、genericprincipal になります。調査の結果、ワークフロー ランタイムがスレッドを作成しており、WCF 呼び出しが行われたスレッドを使用していないことがわかりました。

誰かがこの問題に遭遇しましたか?それに対する良い解決策はありますか?

4

1 に答える 1

0

ランタイムがマネージャーと同じアプリドメインにある場合は、呼び出すことができるはずです

AppDomain.CurrentDomain.SetThreadPrincipal

詳しくはこちら

于 2009-03-26T00:26:02.970 に答える