我有一个访问服务以执行两个调用的方法。这是(简化的)客户端代码:
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
(或其他一些例外)吗?是否存在可能导致代理进入故障状态的异常以外的其他内容?
答案 0 :(得分:0)
似乎有一个错误的web.config
文件。堆栈跟踪告诉我第二次调用存在错误,因为这是using
语句中的最后一个有意义的行,之后代理被释放。仅在处置代理时才会引发CommunicationObjectFaultedException
。
只是编写代码的方式导致堆栈跟踪看起来像调用第二种方法时抛出的异常。