使用XML进行WCF请求验证

LCJ*_*LCJ 9 .net c# wcf wsdl

我有一个WCF使用.Net 4.0框架的SOAP Web服务.我正在使用contract first方法 - 即服务代码是使用WCSF Blue工具从手写WSDL生成的.

我对请求消息有以下要求.

如果价格低于100,则必须没有税元素,但如果它超过100,则需要纳税元素.

在XPath中,表达式如下

//t:price[. < 100][not(following::t:tax)] or 
//t:price[. >=100][following::t:tax]
Run Code Online (Sandbox Code Playgroud)

我可以在服务的C#代码中处理它.但我想使用任何XML技术在WSDL本身中定义规则.这将有助于客户端了解输入消息应该满足的业务验证.(这是业务规则的定义,其实现在WSDL本身;不会将其他文档共享给客户端.)

在WCF中实现它的最佳方法是什么?WSDL我可以在哪个部分定义,XML validations以便它将被处理WCF

在下面给出的前两个参考文献中,提到了一种关于XPath和C#处理程序(用于Web服务框架)的方法.我们不能在WCF中这样做吗?C#不能从WSDL读取XPath吗?怎么做?任何参考?

注意:我可以执行C#处理程序; 但business logic对于validation应该在XML

参考

  1. 使用业务规则验证扩展ASP.NET WebMethod框架 - 由Aaron Skonnard和Dan Sullivan完成
  2. WS-Policy和WSE 2.0断言处理程序 - 由Aaron Skonnard撰写
  3. Hartmut的盒子 - 使用WCF的四个原则和XML消息传递
  4. 使用WCF中的Schema进行消息验证
  5. 使用Schematron/XSD在C#中进行XML验证
  6. 在xsd中定义xml,其中属性确定可能的内容

小智 1

我认为您不能在 WSDL 本身中执行此操作,但您可以插入一个处理程序,在分派用户代码之前执行验证。

有一个 Enterprise Library 块可以处理此类验证,当然您也可以自行构建并将其添加到 WCF 堆栈中。