Alb*_*aro 8 c# wcf xsd wsdl web-services
我使用WCF创建了一个Web服务.我无法弄清楚如何通过数据协定设置WSDL/XSD中的约束和限制.
如果我使用约束改进XSD2架构然后将此自定义架构绑定到现有服务,该怎么办?如果是这样,我如何使服务公开改进的WSDL?否则,是否有其他方法来设置WCF服务的元数据?
这似乎是一个常见问题。服务元数据描述了数据契约。也就是说,交换数据的结构,没有任何验证信息。
我一直在通过在服务层之上实现验证层来解决这个问题。其过程如下:
除了 WSDL 之外,服务作者和消费者还就一个精炼的 XSD 达成一致,该 XSD 描述了除数据契约的单纯结构之外的所有验证细节。
各方 (xml) 根据精炼的 XSD 序列化和验证数据契约。
再次验证 XSD 请求的服务方法的示例“伪代码”。
public string MyServiceMethod(MyDataType m){
string s = XmlSerialize(m);
if( XSDValidate(s) ){
return ProcessRequest(m);
}else{
return BuildErrorResponse("The request is not compliant with the contract");
}
}
Run Code Online (Sandbox Code Playgroud)
服务使用者还可以实现类似的逻辑,以在将请求数据发送到服务器之前验证请求数据。