Исключение при использовании службы WCF - PullRequest
0 голосов
/ 31 октября 2019

Я пытался использовать службу wcf, но получаю сообщение об ошибке при вызове информации о привязке из C #. Ошибка: «в конфигурации не найдено ни одного элемента, соответствующего ключу».
Вы можете мне помочь?

Я проверил, и имя конфигурации привязки такое же, как в файле app.config.

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
WSHttpBinding binding = new WSHttpBinding("bindingconfig name");
EndpointAddress address = new EndpointAddress("endpoint address");

Когда я пытался вызвать его, выдается исключение из формы привязки объекта WSHttpBinding.

1 Ответ

0 голосов
/ 31 октября 2019

Пожалуйста, используйте клиентский прокси-класс для вызова службы.
https://docs.microsoft.com/en-us/dotnet/framework/wcf/accessing-services-using-a-wcf-client
Например, следующие сегменты кода.

ServiceReference1.TestServiceClient client = new ServiceReference1.TestServiceClient();
try
{
    var result = client.GetResult();
    Console.WriteLine(result);
}
catch (Exception)
{
    throw;
}
client.Close();

Конфигурация (автоматически сгенерированная).

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpBinding_ITestService" />
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://10.157.13.69:16666/" binding="basicHttpBinding"
            bindingConfiguration="BasicHttpBinding_ITestService" contract="ServiceReference1.ITestService"
            name="BasicHttpBinding_ITestService" />
    </client>
</system.serviceModel>

клиентский прокси будет использовать привязку по умолчанию и адрес конечной точки. Если в конфигурации создаются конечные точки множественного обслуживания, мы должны указать конечную точку службы, используемую для связи с помощью функции построения клиентского прокси.

ServiceReference1.TestServiceClient client = new ServiceReference1.TestServiceClient(“BasicHttpBinding_ITestService”);

Кроме того, мы также можем использовать ChannelFacotry для вызова службы,но они, по сути, одинаковы.

   Uri uri = new Uri("http://10.157.13.69:16666");
            BasicHttpBinding binding = new BasicHttpBinding();
       ChannelFactory<ICalculator> factory = new ChannelFactory<ICalculator>(binding,new EndpointAddress(uri));
            ICalculator service = factory.CreateChannel();
            try
            {
                var result = service.Add(34.32, 2.34);
                Console.WriteLine(result);

            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                throw;
            }
        }

    [ServiceContract]
    public interface ICalculator
    {
        [OperationContract]
        double Add(double a, double b);
    }

Не стесняйтесь, дайте мне знать, если есть что-то, с чем я могу помочь.

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