【发布时间】:2013-01-13 12:04:31
【问题描述】:
我有一个访问服务以执行两个调用的方法。这是(简化的)客户端代码:
try
{
using (var client = new IntegrationServiceClient())
{
int taskID = client.CreateTask(param, taskType, taskDate);
if (taskID < 0)
{
//There was some error
return -1;
}
if (!client.ExecuteTask(taskID, taskType))
{
//There was some error
}
}
}
catch (Exception ex)
{
LogManager.Log("Error while creating and executing task", ex);
}
我只在第二次调用时收到CommunicationObjectFaultedException 异常。这怎么可能?如果有某种故障,我不应该在第一次通话后得到FaultException(或其他一些异常)吗?除了异常之外,还有什么东西会导致代理进入故障状态吗?
【问题讨论】:
-
它可能在第二次调用时出现故障。有
InnerException吗? -
另一个问题,当您使用新的
IntegrationServiceClient进行第二次通话时,它是否有效? -
日志文件没有显示任何内部异常,但我不相信
LogManager会显示它们。我重构了代码,将每个调用放在自己的 using 和自己的 try-catch 中。我现在在第一次通话时收到了CommunicationObjectFaultedException。 -
啊,我明白了,它在尝试处置/关闭代理时引发了该异常。但我仍然需要首先找出导致代理出现故障的原因。