我有一个托管多个 WCF 服务的应用程序。我创建了一个运行良好的自定义 ServiceAuthorizationManager。我检查 OperationContext.IncomingMessageHeaders 上的一些元素以获取用户名和密码。这是为了克服我们环境中的一些限制,这些限制不允许我们使用平台内置的内容。管理器创建一个自定义 IPrincpal,其中包含一些必要的自定义对象,并将其放置在当前运行的线程上,以供稍后在 WCF 业务逻辑中使用。这很好用。
问题是我有一个 WCF 服务,它是一个工作流,我需要在那里使用相同的机制。管理器被正确调用,但是当执行线程的 currentPrincpal 不是我的自定义主体时,它是一个通用主体。调查显示工作流运行时正在创建一个线程,而不是使用 WCF 调用所在的线程。
有没有人遇到过这个问题,有什么好的解决方案吗?