WSDL для отдельных операций - PullRequest
0 голосов
/ 10 мая 2019

Я получил wsdl от моего клиента для вызова их веб-сервисов, встроенных в WCF. У этого wsdl есть n операций, которые на самом деле не нужны для моей цели. Вместо этого мне нужно всего 2-3 метода для вызова. Есть ли какой-нибудь способ для меня разделить wsdl или настроить wsdl для работы только для моих методов?

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Не знаю, как удовлетворить ваши требования с помощью 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, я мог бы закомментировать метод Substract в ICalculatorService и CalculatorServiceClient.

0 голосов
/ 10 мая 2019

Хотя может быть возможно отредактировать wsdl и удалить операции, которые вы не планируете использовать, вероятно, намного проще обеспечить реализацию по умолчанию. Вы можете использовать, например, throw new NotImplementedException() как тело метода. Это имеет приятный побочный эффект - генерируется исключение, когда при непредвиденном вызове кода вызывается метод, который вы не планировали использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...