WSDL用于单个操作

时间:2019-05-10 01:36:33

标签: c# wcf wsdl

我从客户端收到了一个wsdl来调用他们在WCF中内置的Web服务。这个wsdl有n个操作,这些操作实际上并不是我需要的。相反,我只需要调用2-3个方法。我有什么可能的方法来拆分wsdl或调整wsdl以使其仅适用于我的方法?

2 个答案:

答案 0 :(得分:0)

尽管可以编辑wsdl并删除您不打算使用的操作符,但是提供默认实现可能要容易得多。您可以使用例如throw new NotImplementedException()作为方法主体。这有一个很好的副作用,即在无意中调用代码时调用了您不打算使用的方法时会引发异常。

答案 1 :(得分:0)

不知道如何使用wsdl满足您的要求。 但是,通过此wsdl添加服务引用后,您可以删除不需要的方法。

例如,添加参考后,我具有ICalculatorService服务合同和CalculatorServiceClient服务代理。

public interface ICalculatorService  {

    [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICalculatorService/Add", ReplyAction="http://tempuri.org/ICalculatorService/AddResponse")]
    double Add(double a, double b);



    //[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICalculatorService/Substract", ReplyAction="http://tempuri.org/ICalculatorService/SubstractResponse")]
    //double Substract(double a, double b);

}

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
public interface ICalculatorServiceChannel : consoleClient.CalculatorClient.ICalculatorService, System.ServiceModel.IClientChannel {
}

[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
public partial class CalculatorServiceClient : System.ServiceModel.ClientBase<consoleClient.CalculatorClient.ICalculatorService>, consoleClient.CalculatorClient.ICalculatorService {

    public CalculatorServiceClient() {
    }

    public CalculatorServiceClient(string endpointConfigurationName) : 
            base(endpointConfigurationName) {
    }

    public CalculatorServiceClient(string endpointConfigurationName, string remoteAddress) : 
            base(endpointConfigurationName, remoteAddress) {
    }

    public CalculatorServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
            base(endpointConfigurationName, remoteAddress) {
    }

    public CalculatorServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
            base(binding, remoteAddress) {
    }

    public double Add(double a, double b) {
        return base.Channel.Add(a, b);
    }



    //public double Substract(double a, double b) {
    //    return base.Channel.Substract(a, b);
    //}


}

如果我不想使用Substract方法,可以在ICalculatorService和CalculatorServiceClient中都将Substract方法注释掉。