如何模拟WorkflowApplication内部执行的WCF客户端?
我有以下情况: 我的工作流应用程序对象正在运行工作流活动。在工作流活动逻辑中,我调用一个WCF服务,其中服务操作也作为一组活动生成 问题是:在这种情况下,我如何传递凭据并模拟其他用户,因为通常是这样做的:如何模拟WorkflowApplication内部执行的WCF客户端?,wcf,workflow,Wcf,Workflow,我有以下情况: 我的工作流应用程序对象正在运行工作流活动。在工作流活动逻辑中,我调用一个WCF服务,其中服务操作也作为一组活动生成 问题是:在这种情况下,我如何传递凭据并模拟其他用户,因为通常是这样做的: MyServiceClient client = new MyServiceClient(); client.ClientCredentials.Windows.ClientCredential.Domain = domain; client.ClientCredentials.Windows
MyServiceClient client = new MyServiceClient();
client.ClientCredentials.Windows.ClientCredential.Domain = domain;
client.ClientCredentials.Windows.ClientCredential.UserName = username;
client.ClientCredentials.Windows.ClientCredential.Password = password;
我试图模拟运行工作流应用程序对象的代码块,但在这种情况下,我得到某种异常,表示“无法加载文件或程序集…访问被拒绝”。据我所知,此异常的原因是工作流应用程序试图调用原始登录用户下的程序集
有什么帮助吗?使用调用进程的凭据进行Windows身份验证是受支持的最佳身份验证方法,但在WF CodePlex站点()上的WF Security Pack CTP 1中有处理用户名/密码身份验证的活动。请参阅
TokenFlowScope
和GetUserNameSecurityToken
。本文将详细介绍它:。我没有试过这个,如果可能的话,我会尽量避免
对于第二个问题,还有一点是让工作流在WorkflowApplication模拟下运行。同一条:
调用线程的安全上下文不会复制到工作流线程,因此即使工作流客户端正在模拟,执行活动的WF线程也不会模拟。调用方的安全上下文可以使用自定义同步上下文传递到WF线程,该上下文将转发同一传入异步线程上的调用,类似于WorkflowInvoker使用的同步上下文
public class MySyncContext : SynchronizationContext
{
public override void Post(SendOrPostCallback d, object state)
{
d(state);
}
}