WSDL用于单个操作



我已经从客户端收到了WSDL,以调用其内置WCF的Web服务。该WSDL有n个操作数量,实际上对于我的目的而言,这实际上不是必需的。相反,我只需要调用2-3种方法。我有什么可能的方法可以将WSDL分开或调整WSDL以仅用于我的方法?

虽然可以编辑WSDL并删除您不打算使用的操作方法,但提供默认实现可能会容易得多。您可以使用例如throw new NotImplementedException()作为方法主体。当调用代码无意中调用您不打算使用的方法时,这具有很好的副作用。

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

例如,我添加了参考后,我有ICalculatorsService服务合同和计算电视服务代理。

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);
    //}

}

如果我不想要提取方法,我可以在iCalculatorservice和calculatorserviceclient中评论subtract方法。

最新更新