Пожалуйста, используйте клиентский прокси-класс для вызова службы.
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);
}
Не стесняйтесь, дайте мне знать, если есть что-то, с чем я могу помочь.