0

我有一个托管多个 WCF 服务的应用程序。我创建了一个运行良好的自定义 ServiceAuthorizationManager。我检查 OperationContext.IncomingMessageHeaders 上的一些元素以获取用户名和密码。这是为了克服我们环境中的一些限制,这些限制不允许我们使用平台内置的内容。管理器创建一个自定义 IPrincpal,其中包含一些必要的自定义对象,并将其放置在当前运行的线程上,以供稍后在 WCF 业务逻辑中使用。这很好用。

问题是我有一个 WCF 服务,它是一个工作流,我需要在那里使用相同的机制。管理器被正确调用,但是当执行线程的 currentPrincpal 不是我的自定义主体时,它是一个通用主体。调查显示工作流运行时正在创建一个线程,而不是使用 WCF 调用所在的线程。

有没有人遇到过这个问题,有什么好的解决方案吗?

4

1 回答 1

0

如果运行时与管理器在同一个应用程序域中,那么您应该可以调用

AppDomain.CurrentDomain.SetThreadPrincipal

请参阅此处了解更多信息

于 2009-03-26T00:26:02.970 回答