WCF无法捕获FaultException

简介:

有一个服务错误契约是这样的BusinessFault

1
throw  new  FaultException<BusinessFault>( new  BusinessFault(), errMessage);

这样抛出后,客户端一直收到的是CommunicationException而不是上面的具体的Exception.最后使用如下代码通过

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BusinessFault businessFault = new  BusinessFault
   {
       FaultDetail = new  FaultDetail
                         {
                             ErrorCode = "BusinessError" ,
                             Message =
                                 string .IsNullOrEmpty(errMessage)
                                     ? errMessage
                                     : "No Message"
                         },InvalidArgumentDetail = new  InvalidArgumentDetail()
                          
   };
 
 
throw  new  FaultException<BusinessFault>(businessFault,errMessage);

为什么呢?经过仔细排查,发现Schema定义的一些元素是不能为空的,比如Error和Message,但是开发人员在写的时候和编译的时候都发现不了。我觉得这个如果生成代理类时用构造函数来强制就好了。

image
本文转自敏捷的水博客园博客,原文链接http://www.cnblogs.com/cnblogsfans/archive/2011/02/14/1954351.html如需转载请自行联系原作者

王德水
相关文章
十五天精通WCF——第十四天 一起聊聊FaultException
原文:十五天精通WCF——第十四天 一起聊聊FaultException       我们在玩web编程的时候,可能你会不经意的见到一些http500的错误,我想你应该不会陌生的,原因你应该也知道,服务器异常嘛, 这时候clr会把这个未处理的异常抛给iis并且包装成http500的错误返回到客户端,就比如下面这样。
1164 0
|
安全 程序员 C++
WCF基础教程之异常处理:你的Try..Catch语句真的能捕获到异常吗?
  在上一篇WCF基础教程之开篇:创建、测试和调用WCF博客中,我们简单的介绍了如何创建一个WCF服务并调用这个服务。其实,上一篇博客主要是为了今天这篇博客做铺垫,考虑到网上大多数WCF教程都是从基础讲起的,大家平时工作可能只是去调用和修改WCF的一些方法,而并未创建和配置过WCF,如果大家通过网上的教程去一步一步的创建和配置WCF,中途遇到错误,特别是WCF的配置这块很容易出错,难免会浪费时间。
815 0
|
安全 程序员 C++
WCF基础教程之异常处理:你的Try..Catch语句真的能捕获到异常吗?
原文:WCF基础教程之异常处理:你的Try..Catch语句真的能捕获到异常吗?   在上一篇WCF基础教程之开篇:创建、测试和调用WCF博客中,我们简单的介绍了如何创建一个WCF服务并调用这个服务。其实,上一篇博客主要是为了今天这篇博客做铺垫,考虑到网上大多数WCF教程都是从基础讲起的,大家平时工作可能只是去调用和修改WCF的一些方法,而并未创建和配置过WCF,如果大家通过网上的教程去一步一步的创建和配置WCF,中途遇到错误,特别是WCF的配置这块很容易出错,难免会浪费时间。
1251 0
|
10月前
|
前端开发
WCF更新服务引用报错的原因之一
WCF更新服务引用报错的原因之一
|
9月前
|
C# 数据安全/隐私保护
c#如何创建WCF服务到发布(SqlServer版已经验证)
c#如何创建WCF服务到发布(SqlServer版已经验证)
38 0
|
9月前
|
安全 数据库连接 数据库
WCF服务创建到发布(SqlServer版)
在本示例开始之前,让我们先来了解一下什么是wcf? wcf有哪些特点? wcf是一个面向服务编程的综合分层架构。该架构的项层为服务模型层。 使用户用最少的时间和精力建立自己的软件产品和外界通信的模型。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案。且能与已有系统兼容写作。 简单概括就是:一组数据通信的应用程序开发接口。
60 0
|
10月前
Visual Studio 2022 创建 WCF服务 找不到
Visual Studio 2022 创建 WCF服务 找不到
|
C++
WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题
WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题
102 0
WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题
WCF使用纯代码的方式进行服务寄宿
服务寄宿的目的是为了开启一个进程,为WCF服务提供一个运行的环境。通过为服务添加一个或者多个终结点,使之暴露给潜在的服务消费,服务消费者通过匹配的终结点对该服务进行调用,除去上面的两种寄宿方式,还可以以纯代码的方式实现服务的寄宿工作。
850 0