【问题标题】:WCF proxy faulted but does not throw an exceptionWCF 代理出现故障但未引发异常
【发布时间】: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
  • 啊,我明白了,它在尝试处置/关闭代理时引发了该异常。但我仍然需要首先找出导致代理出现故障的原因。

标签: c# .net wcf


【解决方案1】:

似乎有一个错误的web.config 文件。堆栈跟踪告诉我第二次调用时出现错误,因为这是using 语句中最后一个有意义的行,之后代理被处理。 CommunicationObjectFaultedException 仅在处理代理时引发。

只是代码的编写方式导致堆栈跟踪看起来像是在调用第二种方法时引发了异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 2012-08-11
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多