在Workflow中使用自定义主体

时间:2009-03-25 21:56:23

标签: wcf multithreading workflow authorization servicehost

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

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

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

1 个答案:

答案 0 :(得分:0)

如果运行时与管理器位于同一个appdomain中,那么您应该可以调用

AppDomain.CurrentDomain.SetThreadPrincipal

有关详细信息,请参阅here