我正在使用 WorkFlowServiceHost(在 .net 3.5 中)来托管状态机工作流。我使用 WCF 接收活动来处理对工作流的调用。我正在使用 WCF 授权策略根据消息标头中的信息将声明附加到传入请求。因此,在链条的更下方,我可以使用 ServiceSecurityContext 或仅使用 Thread.CurrentPrincipal 来获取有关请求(角色、用户等)的授权信息。
我知道这对我们不起作用,因为工作流正在分派不同的线程来处理运行时引擎在有工作要做时引发的事件(即接收活动)。关于请求的上下文信息(OperationContext)在工作流中不再可用(除了在运行时线程上随机执行工作时)。
我想做的是在创建工作线程之前获取有关请求(OperationContext)的信息,获取工作线程并将上下文信息附加到它,以便它在工作流实例中可用。
我想在运行时必须有一些事件我可以处理来做到这一点,但我没有想出任何东西。而且我真的不想使用手动工作流调度程序。任何帮助表示赞赏。
谢谢!