将自定义WSDL绑定到现有WCF服务

Alb*_*aro 8 c# wcf xsd wsdl web-services

我使用WCF创建了一个Web服务.我无法弄清楚如何通过数据协定设置WSDL/XSD中的约束和限制.

如果我使用约束改进XSD2架构然后将此自定义架构绑定到现有服务,该怎么办?如果是这样,我如何使服务公开改进的WSDL?否则,是否有其他方法来设置WCF服务的元数据?

xtr*_*rem 1

这似乎是一个常见问题。服务元数据描述了数据契约。也就是说,交换数据的结构,没有任何验证信息。

我一直在通过在服务层之上实现验证层来解决这个问题。其过程如下:

除了 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)

服务使用者还可以实现类似的逻辑,以在将请求数据发送到服务器之前验证请求数据。