0

ユーザーとロールがデータベースに保持されているWCFサービスを使用しています。私のサービスでは、誰がサービスを呼び出しているかを特定しようとしています。だから私は自分のWCFサービスを入力します

文字列ユーザー = ServiceSecurityContext.Current.PrimaryIdentity.Name;

しかし、参照に送信されていないnullexceptionオブジェクトが表示されます。一日中グーグル検索を試みましたが、何が問題なのかを見つけることができません。助言がありますか ?

4

1 に答える 1

1

「何が問題なのか」は、のインスタンスではなく、ServiceSecurityContext.Current戻ってくることです。nullServiceSecurityContext

これが発生するシナリオの1つは、にMessageCredentialType設定されたメッセージセキュリティを使用するようにバインディングが構成されている場合Noneです。

ただし、次のようなすべてのシナリオをリストした包括的なドキュメントを私は知りませんServiceSecurityContext.Currentnullセキュリティコンテキストはチャネルスタックで確立されるため、使用している特定のバインディング構成とセキュリティプロバイダーに依存します。また、メッセージのプロパティをいじるカスタムビヘイビアの影響を受ける可能性もあります。

そうは言っても、チャネルスタックにカスタムコードを挿入しない限り、これはバインディングがクライアント認証を必要としない場合にのみ発生するというのはおそらく安全な仮定です。まず最初に、クライアントを強化し、期待する種類のユーザー名を提供するバインディング構成を使用していることを確認する必要がありますIIdentity

于 2012-07-26T15:27:09.793 に答える