0

IDispatchMessageInspector を使用して、WCF サービスのカスタム ログ ロジックを実装しました。

AfterReceiveRequest と BeforeSendReply の両方を利用して、SOAP 要求/応答全体をデータベースに記録しています。

問題なく動作するクレームベース認証を使用しています。

ただし、Thread.CurrentPrincipal.Identity.Name または ClaimsPrincipal.Current.Identity.Name にアクセスしようとすると、常に空の文字列が返されます (ID が設定されていないため、名前は空白です)。

IDispatchMessageInspector から何らかの方法で ID にアクセスする方法はありますか?

ありがとうございました!

4

1 に答える 1

2

クレームベース認証が機能している場合は、ユーザーをクレームセットに追加できます。静的な方法で ClaimSet にアクセスできます。

ReadOnlyCollection<ClaimSet> claimSets = ServiceSecurityContext.Current.AuthorizationContext;`

もう 1 つの可能性はServiceAuthorizationManager、サービスに を追加し、構成に登録して、このクラスから ClaimSet にアクセスすることです。

お役に立てれば

于 2013-03-25T13:12:04.150 に答える