0

我使用 WCF 服务,用户和角色保存在数据库中。在我的服务中,我试图确定谁在调用该服务。所以我输入我的 WCF 服务

字符串用户 = ServiceSecurityContext.Current.PrimaryIdentity.Name;

但我得到我的 nullexception 对象没有发送到引用,我整天都在尝试用谷歌搜索它,但似乎找不到什么问题。有什么建议么 ?

4

1 回答 1

1

“出了什么问题”是ServiceSecurityContext.Current返回null而不是ServiceSecurityContext.

发生这种情况的一种情况是,如果绑定配置为使用MessageCredentialType设置为的消息安全性None

但是,我不知道有任何综合文档列出了ServiceSecurityContext.Current可能出现的每个场景null:由于安全上下文是在通道堆栈中建立的,因此它取决于特定的绑定配置和使用的安全提供程序。我想,它也可能受到摆弄消息属性的自定义行为的影响。

话虽如此,除非您将自定义代码插入到通道堆栈中,否则可以安全地假设这只会发生在绑定不需要任何客户端身份验证的情况下。您应该首先检查您正在使用绑定配置,该配置将验证客户端并提供IIdentity您期望的用户名类型。

于 2012-07-26T15:27:09.793 回答