0

我已经使用 IDispatchMessageInspector 为 WCF 服务实现了自定义日志记录逻辑。

我通过使用 AfterReceiveRequest 和 BeforeSendReply 在数据库中记录整个 SOAP 请求/响应。

我正在使用基于声明的身份验证,它可以正常工作。

但是,当我尝试访问 Thread.CurrentPrincipal.Identity.Name 或 ClaimsPrincipal.Current.Identity.Name 时,总是得到空字符串(未设置身份,因此名称为空)。

有没有办法从 IDispatchMessageInspector 以任何方式访问身份?

谢谢!

4

1 回答 1

2

如果您的基于声明的身份验证有效,您可以将用户添加到您的声明集中。您可以以静态方式访问您的 ClaimSet:

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

另一种可能性是将 a 添加ServiceAuthorizationManager到您的服务中,在您的配置中注册它并从此类访问您的 ClaimSet。

希望这可以帮助

于 2013-03-25T13:12:04.150 回答