Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何模拟WorkflowApplication内部执行的WCF客户端?_Wcf_Workflow - Fatal编程技术网

如何模拟WorkflowApplication内部执行的WCF客户端?

如何模拟WorkflowApplication内部执行的WCF客户端?,wcf,workflow,Wcf,Workflow,我有以下情况: 我的工作流应用程序对象正在运行工作流活动。在工作流活动逻辑中,我调用一个WCF服务,其中服务操作也作为一组活动生成 问题是:在这种情况下,我如何传递凭据并模拟其他用户,因为通常是这样做的: MyServiceClient client = new MyServiceClient(); client.ClientCredentials.Windows.ClientCredential.Domain = domain; client.ClientCredentials.Windows

我有以下情况:

我的工作流应用程序对象正在运行工作流活动。在工作流活动逻辑中,我调用一个WCF服务,其中服务操作也作为一组活动生成

问题是:在这种情况下,我如何传递凭据并模拟其他用户,因为通常是这样做的:

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);
  }
}