2009-07-21 33 views
1

我有一台计算机充当WCF服务主机。客户端机器将运行多个客户端进程,每个客户端进程也在不同的端口(5601,5602等)上托管WCF服务。客户端进程将握手主机。一旦收到握手信号,主机将发回一些数据。按照主机上的单独方法的指示,客户端进程一个接一个地产生。但是,在启动多个实例后,我仍然收到以下异常:承载一个WCF服务被多个消费者使用,得到FaultException

由于内部错误,服务器无法处理请求。有关该错误的更多信息,请在服务器上打开IncludeExceptionDetailInFaults(来自ServiceBehaviorAttribute或来自配置行为),以便将异常信息发送回客户端,或根据Microsoft .NET Framework 3.0 SDK文档启用跟踪并检查服务器跟踪日志。

然而,当我在产卵之间添加延迟时,似乎没有问题。这会导致什么,我该如何解决?

在远程系统上产生立即尝试与主系统上的控制器服务握手的进程。

 target.InitiateTestProcess(a); 
     //System.Threading.Thread.Sleep(1000); 
     target.InitiateTestProcess(b); 

而对于握手

public void Handshake(Uri connectBack) 
    { 
     IWorkerContract client = ChannelFactory<IWorkerContract>.CreateChannel(
      new BasicHttpBinding(), 
      new EndpointAddress(new Uri(connectBack, "Worker"))); 

     client.PassUUT(clients[connectBack]); 
    } 

如果需要额外的信息,我会尽量解决您的问题,以我的能力,请发表评论。

回答

0

我解决了这个问题,我启用了IncludeExceptionDetailInFaults消费者,所以他们会报告异常详细信息。工作人员正在创建和读取文件,通常是同一个文件(通过测试,它始终是同一个文件),并且偶尔有两个进程会尝试读取同一个文件时发生冲突。