【发布时间】: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