首页 / 知识
关于c#:WCF错误和异常
2023-04-17 10:27:00

WCF faults and exceptions我是第一次写WCF服务。 该服务及其所有客户端(至少到目前为止)均使用C#编写。 该服务必须对传递的数据进行大量输入验证,因此我需要某种方式将无效数据指示回客户端。 我已经阅读了很多有关错误和异常的文章,将异常包装在错误中,以及许多相互矛盾的文章,这些都进一步使我感到困惑。 处理这种情况的正确方法是什么? 我应该完全避免异常并打包结果返回消息吗? 我应该创建一个特殊的Fault或一个特殊的Exception,还是像非WCF验证函数那样抛出ArgumentExceptions? 我现在拥有的代码(受MSDN影响)是:
在该方法上有[FaultContract(typeof(ValidationFault)))。 那么这是解决这个问题的"正确"方法吗? 从WCF服务中引发异常是没有用的,为什么不呢?因为它作为一个纯粹的错误回来,您需要 a)设置故障以包括异常 b)解析故障以获取异常的文本并查看发生了什么。 所以是的,您需要一个错误而不是一个例外。在您的情况下,我将创建一个自定义错误,其中包含失败列表中失败的字段列表。 请注意,WCF使用字典来使事情变得有趣,这些字典不能进行ISerializable;它具有特殊的处理方式,因此请检查回传的消息在线路上看起来是否良好;如果没有,它会为您返回数组。 如果您要在客户端上进行验证,并且一旦将它们传递到方法(Web服务调用)中时应该具有有效值,那么我将抛出异常。可能是一个例外,表明参数名称对参数无效。 (请参阅:ArgumentException) 但是,您可能不希望依赖客户端来正确验证数据,这使您假设数据可能无效,从而无法进入Web服务。在那种情况下,这并不是真正的例外情况,也不应该例外。在那种情况下,您可以返回一个枚举或一个Result对象,该对象的Status属性设置为枚举(OK,Invalid,Incomplete),并且Message属性设置为特定参数(例如参数名称)。 我将确保在开发过程中发现并修复此类错误。您的质量检查流程应仔细测试客户端的有效使用和无效使用,并且您不希望将这些技术消息传递回客户端。您要做的是更新验证系统,以防止无效数据进入服务呼叫。 我对任何WCF服务的假设都是会有多个UI。现在可能是一个Web UI,但是以后我可能会使用WinForms,WinCE甚至是本机iPhone / Android移动应用程序添加另一个,它与.NET客户端的要求不符。 您可能需要结合策略注入块链接文本来查看" MS模式和实践企业库验证"块,它允许您使用验证属性来装饰数据合同成员,还可以装饰服务实现,以及它的集成使用WCF,这意味着验证失败会作为ArgumentValidationException错误自动返回,每个错误都包含每个验证失败的ValidationDetail对象。 将entlib与WCf结合使用,您无需进行大量代码即可进行大量验证和错误报告 |
最新内容
相关内容
linux操作数据库命令?
linux操作数据库命令?,地址,服务,系统,密码,数据库,工具,名字,首页,命令,参数,如何实现MySQL数据库的基本用法在linux下1、mysql all-database纯命令行linux服务器?
纯命令行linux服务器?,密码,服务,系统,命令,终端,地址,百度,情况,状态,公共,在linux下如何访问服务器首先,连接相应linux主机,进入到linux命令行重启服务linux命令?
重启服务linux命令?,网络,系统,服务,设备,工作,标准,名称,工具,命令,管理,Linux的重启命令有哪些1、linux重启命令有五个,分别如下:shutdown。polinux下载数据命令?
linux下载数据命令?,软件,工具,数据,系统,代理,官网,网络,名称,网址,盘中,在linux下如何下载svn上的文件?1、首先,打开linux,进入主界面,然后在主做数据linux常用命令?
做数据linux常用命令?,工作,系统,基础,网络,数据,标准,管理,工具,地址,命令,linux运维常用命令Curl命令用法 curl语法和参数选项 # curl [optlinux下命令访问服务?
linux下命令访问服务?,服务,密码,状态,信息,地址,网络,认证,系统,号码,名称,linux中远程访问的命令步骤如下:查询\安装SSH服务 (1)登陆linux系统linux查重复数据命令?
linux查重复数据命令?,工具,数据,系统,电脑,名字,资料,代码,百度,标准,技术,利用Linux命令行进行文本按行去重并按重复次数排序1、输入文件 指检查linux服务器命令?
检查linux服务器命令?,系统,信息,状态,情况,时间,工具,网络,环境,服务,电脑,如何查看linux服务器的版本和配置信息?1、登录到linux服务器执行llinux同步客户端命令?
linux同步客户端命令?,时间,网络,服务,系统,认证,状态,管理,信息,分析,地址,linux中的rsync同步怎么配置1、至此,设置 ssh 认证完毕。设置 rsynlinux数据库升级命令?
linux数据库升级命令?,系统,信息,时间,最新,网络,名字,地址,管理,简介,传播,linux下手动更新locate所在数据库的指令updatedb为什么行不通_百linux7关闭服务命令?
linux7关闭服务命令?,系统,软件,服务,命令,电脑,状态,工具,管理,进程,用户,求Linux关机命令详解shutdown命令 shutdown命令用于安全关闭Linuxlinux命令错误的是?
linux命令错误的是?,系统,信息,异常,密码,工具,地址,网络,实时,状态,数据,Linux系统中输入命令,输出结果有误是怎么回事?出现以上提示,很多原因