• WCF中使用自定义behavior提示错误的解决方法


    WCF中支持自定义behavior,可通过配置的方式给endpoint或者service设置behavior。配置方法就是在system.serviceModel/extensions/behaviorExtensions节点下注册自定义的behavior,之后就可以在behaviors节点中使用。注册的配置如下

    注册自定义Behavior
    1 <extensions>
    2           <behaviorExtensions>
    3               <add name="validation"
    4                type="Microsoft.Practices.EnterpriseLibrary.Validation.Integration.WCF.ValidationElement,
    5                  Microsoft.Practices.EnterpriseLibrary.Validation.Integration.WCF,
    6                  Version=4.1.0.0, Culture=neutral, 
    7                  PublicKeyToken=31bf3856ad364e35" />
    8           </behaviorExtensions>
    9       </extensions>

    这里用的是企业库中用于支持WCF验证的behavior扩展。

    按照enterpise library 4.1版本中的帮助文档描述是这样配置的,但是运行时却出现以下错误:

    参数名: element (E:\aspnet\WcfService\TestParameterValidate\bin\Debug\TestParameterValidate.dll.config line 34) ---> System.ArgumentException: 无法将扩展元素“validation”添加到此元素中。请验证该扩展是否已在 system.serviceModel/extensions/behaviorExtensions 中的扩展集合中注册。

    出现这种错误的只可能是拼写错误了,但那段配置可是从企业库的帮助文档中拷贝的,难道WCF不认企业库的dll,那可都是一家的产品。回想起之前写过一个自定义的behavior,也有这个问题,那么确定不是企业库的问题,问题还是在于WCF的配置。

    经过搜索,在园子里的一篇文章提到了这个问题(http://www.cnblogs.com/hxw/archive/2009/09/17/1331641.html),说这是WCF的bug,配置中对于type的字符串必须严格按照规范来写,而且不能有换行等。照着这个思路,把type工工整整地写了一遍,还是报同样的错误,真让人崩溃。

    这时想到了用WCF的配置工具,这个工具是.NET提供的,专门用于配置config中的WCF配置内容。调出的方法是对着配置文件,点击右键,然后选择"编辑WCF配置"。打开之后,所有内容都在掌控之中了。

    配置extensions如下步骤:

    第一步选择行为元素扩展:

    第二步点击右下方的"新建"按钮,在弹出的界面中选择自定义的类型

    点击确定之后,保存即可。

    经过配置之后,工具生成的配置代码如下,咋一看没什么区别,但重要的是,能运行起来而且不会报错。

    用工具生成的extensions
    1 <behaviorExtensions>
    2         <add name="validation" type="Microsoft.Practices.EnterpriseLibrary.Validation.Integration.WCF.ValidationElement, Microsoft.Practices.EnterpriseLibrary.Validation.Integration.WCF, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    3       </behaviorExtensions>

     

  • 相关阅读:
    天空卫士陆明:数据法在企业如何落地
    陈宏申:浅谈京东电商商品文案挖掘难点与优化实践
    陈胡:Apache SeaTunnel实现 非CDC数据抽取实践
    李阳:京东零售OLAP平台建设和场景实践
    李卓豪:网易数帆数据中台逻辑数据湖的实践
    苗大东:京东基于强化学习的电商搜索排序算法
    构建AR视频空间大数据平台(物联网及工业互联网、视频、AI场景识别)
    长连接长轮询
    Nacos数据模型
    漏桶和令牌桶的区别
  • 原文地址:https://www.cnblogs.com/shenba/p/2306541.html
Copyright © 2020-2023  润新知