WCF服务调用服务

时间:2012-05-20 06:55:39

标签: wcf service timeout client synchronous

我有两个.net 3.5 WCF服务,其中服务A同步调用服务B.

两种服务都在同一台机器上并具有以下行为:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]

我为服务B创建了客户端,并在OperationContract服务A中使用它:

Proxyclient client = null;
bool error = true;
int returnVal = 0;

try
{
  client = new Proxyclient;
  returnVal = client.CallServiceB();
  client.Close();
  error = false;
}
finally
{
  if (error)
  {
    client.Abort();
  }
}

但是当调用服务A时,它会将错误写入TraceListener logfile:

  

写入管道无法识别的错误232时出错。

请注意,此邮件具有特定约束力(netNamedPipeBinding)。对于我测试的所有其他绑定,我也遇到了错误。其他绑定的一般含义是:

  

无法写入/连接连接超时并且已经   闭合。

但是,服务/客户端工作,它只是在日志文件中产生错误,所以我认为WCF在这里重试基础。但这会阻止我的日志文件,我不确定这是否会在将来出现问题。

需要注意一些非常特别的事情:

仅当客户端未调用服务B超过2分钟时才会出现此问题(但此时我测试的每个绑定都会更改)。所以在服务启动后的第一次,日志中没有错误,如果我每10秒调用一次这个服务,那么日志中也没有错误。

我还做了什么:

  1. 我使用了所有服务的超时设置而没有任何更改
  2. 我将客户端放入控制台应用程序,并从该控制台应用程序调用服务B.这里没有写出这些错误!
  3. 我在多台机器上进行了测试,并解决了所有问题。
  4. 我从服务A和B中删除了所有代码。我刚刚有了WCF基本代码,但仍然遇到了这个问题。
  5. 我希望有人可以帮助我。

    提前致谢。

0 个答案:

没有答案