【问题标题】:WCF Unit Testing Results in a System.ServiceModel.FaultExceptionWCF 单元测试导致 System.ServiceModel.FaultException
【发布时间】:2011-01-06 22:45:38
【问题描述】:

所以我有一个 WCF 服务,它似乎可以在已部署的生产环境中完美运行。尽管在此 WCF 服务的单元测试期间,我的构建会间歇性地失败。奇怪的是,它并不总是相同的单元测试,但它总是使用 WCF 服务的单元测试。

例外:

System.ServiceModel.FaultException[System.ServiceModel.ExceptionDetail]: The number of bytes available is inconsistent with the HTTP Content-Length header.  There may have been a network error or the client may be sending invalid requests.

奇怪的是,该异常实际上只发生在构建机器上,而从未发生在开发机器上。它似乎只发生在大约 75% 的时间。

WCF 不是我在 .NET 中最强大的方面,因此任何能帮助我指明正确方向的帮助都会很有用。

【问题讨论】:

  • 看来我已经明白了。似乎其中一个 catch 子句是调用 client.Close() 而不是 client.Abort()。 client.Close() 可以抛出一个额外的异常,这就是正在发生的事情。 client.Abort() 不会抛出异常。
  • 请将解决方案作为答案发布并自行接受。它会将您的问题从“未回答”的问题中删除。
  • 抱歉,mkernbach。更新了答案以使其退出队列。

标签: c# .net wcf exception


【解决方案1】:

这个问题最终出现在我们的 catch 子句中:

var proxy = new WcfProxy();

try
{
  // Do something.
}
catch (Exception ex)
{
  proxy.Close();
  throw;
}

catch 子句应该使用 proxy.Abort() 因为 Close() 可能会引发另一个异常。

catch (Exception ex)
{
  proxy.Abort();
  throw;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    相关资源
    最近更新 更多