【问题标题】:Handle WCF exceptions from webservice proxy处理来自 Web 服务代理的 WCF 异常
【发布时间】:2011-03-19 18:33:21
【问题描述】:

我有一个托管在 IIS 中的 WCF 服务 (.NET 4)。我的服务合同有一种方法:

[FaultContract(typeof(string))]

我对该方法的服务实现会验证输入参数,并且可能会抛出如下异常:

if (string.IsNullOrWhiteSpace(siteName)) { throw new FaultException("siteName is required."); }

此服务的消费者程序是一个 .NET 2 控制台应用程序。在这个应用程序中,我通过右键单击“参考”和“添加网络参考”生成了网络服务代理。

当我尝试从客户端应用调用服务方法时,通过发送无效的站点名称,我得到了 503 Service Unavailable 异常,而不是带有自定义错误消息的 FaultException。

如何使带有自定义错误消息的 FaultException 传播到客户端程序?

更新:

我在客户端应用程序中遇到的异常是:

System.ServiceModel.ServerTooBusyException: HTTP 服务位于 http://www.example.com/services/myservice.svc 太忙了。 ---> System.Net.Web 异常:远程服务器返回 错误:(503) 服务器不可用。
在 System.Net.HttpWebRequest.GetResponse() 在 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpCha nnelRequest.WaitForReply(时间跨度 timeout) --- 内部异常结束 堆栈跟踪---

【问题讨论】:

  • 好吧,如果您的客户在 .NET 2.0 上并且您执行“添加 Web 引用”,那么您基本上会得到一个“旧式”Web 服务,它对 FaultException 和其他 WCF 概念。为了捕获和处理 WCF 错误异常,您需要在客户端有 WCF --> .NET 3.0 或更高版本
  • 尝试通过在 .NET 4 中创建一个新的控制台应用程序,使用“添加服务引用”,但得到了相同的结果 :(

标签: web-services wcf wcf-client


【解决方案1】:

问题是由我们 Web 项目中的自定义 HTTP 模块引起的。所以这不完全是 WCF 问题,而是我们解决方案特有的问题。谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    相关资源
    最近更新 更多