WCF服务授权管理器设置Thread.CurrentPrincipal

sas*_*ash 3 authentication wcf authorization principal

我有一个自定义的ServiceAuthorizationManager,我在其中覆盖CheckAccess并验证作为URL一部分的自定义身份验证令牌.验证后,我使用GenericPrincipal设置Thread.CurrentPrincipal.但是当请求最终到达我的服务方法时,Thread.CurrentPrincipal消失了,它不是我在auth管理器中设置的.出了什么问题?

sas*_*ash 6

我通过在注册服务auth管理器的服务行为中设置principalPermissionMode ="None"来解决这个问题.这应该告诉wcf运行时不要在当前线程中放置任何主体.如果将其设置为"custom",它将覆盖您使用GenericPrincipal设置的任何主体.