J'ai une classe TestService
qui implémente deux contrats de service appelés IService1
et IService2
. Mais je suis confronté à une difficulté de mise en œuvre. Mon code se présente comme suit:classe wcf implémentant plusieurs contrats de service
Uri baseAddress = new Uri("http://localhost:8000/ServiceModel/Service");
Uri baseAddress1 = new Uri("http://localhost:8080/ServiceModel/Service1");
ServiceHost selfHost = new ServiceHost(typeof(TestService));
selfHost.AddServiceEndpoint(typeof(IService1), new WSHttpBinding(), baseAddress);
selfHost.AddServiceEndpoint(typeof(IService2), new WSHttpBinding(), baseAddress1);
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
selfHost.Description.Behaviors.Add(smb);
selfHost.Open();
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
selfHost.Close();
Je reçois une erreur de temps d'exécution comme:
La propriété HttpGetEnabled de ServiceMetadataBehavior est définie sur true et la propriété HttpGetUrl est une adresse relative , mais il n'y a pas d'adresse de base http . Fournissez une adresse de base http ou définissez HttpGetUrl sur une adresse absolue .
Que dois-je faire à ce sujet? Ai-je vraiment besoin de deux points de terminaison distincts? Merci.