Как правило, мы используем прокси-класс клиента для вызова веб-службы, добавляя ссылку на службу. Следующим образом.
https://docs.microsoft.com/en-us/dotnet/framework/wcf/accessing-services-using-a-wcf-client
Вы также можете создать клиентский прокси-класс с помощью инструмента SVCUtil.
https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-3.5/aa347733(v=vs.90)
Я сделал простую демонстрацию, желаю, чтобы это было полезно для вас.
Сервер:
namespace Server8
{
class Program
{
static void Main(string[] args)
{
Uri uri = new Uri("http://localhost:1900");
BasicHttpBinding binding = new BasicHttpBinding();
using (ServiceHost sh=new ServiceHost(typeof(MyService),uri))
{
sh.AddServiceEndpoint(typeof(IService), binding, "");
ServiceMetadataBehavior smb;
smb = sh.Description.Behaviors.Find<ServiceMetadataBehavior>();
if (smb==null)
{
smb = new ServiceMetadataBehavior()
{
HttpGetEnabled = true
};
sh.Description.Behaviors.Add(smb);
}
Binding binding1 = MetadataExchangeBindings.CreateMexHttpBinding();
sh.AddServiceEndpoint(typeof(IMetadataExchange), binding1, "mex");
sh.Open();
Console.WriteLine("Service is ready...");
Console.ReadLine();
sh.Close();
}
}
}
[ServiceContract(Namespace ="mydomain")]
public interface IService
{
[OperationContract(Name ="AddInt")]
int Add(int x, int y);
}
public class MyService : IService
{
public int Add(int x, int y)
{
return x + y;
}
}
}
Итак, адрес WSDL:
Http://localhost:1900?wsdl
Svctutil Tool.
Svcutil http://localhost:1900?wsdl /directory:D: /namespace:”mydomain”,”LocalProjectNamespace”
Эта команда будет генерировать прокси-класс клиента в локальном разделе D и заменять пространство имен веб-службы на «LocalProjectNamespace», а также генерировать файл конфигурации клиента (xml), в котором описывается привязка службы и информация о конечной точке.
И затем мы вызываем веб-сервис через клиентский прокси-класс.
static void Main(string[] args)
{
ServiceClient client = new ServiceClient();
try
{
var result = client.AddInt(23, 55);
Console.WriteLine(result);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
Не стесняйтесь, дайте мне знать, если есть что-то, с чем я могу помочь.