Question

J'ai un TestService de classe qui met en œuvre deux contrats de services appelés IService1 et IService2. Mais je suis confronté à une difficulté à la mise en œuvre. Mon code se présente comme suit:

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é est un HttpGetUrl   adresse relative, mais il n'y a pas http   adresse de base. Soit fournir un http   adresse de base ou à un ensemble HttpGetUrl   adresse absolue.

Que dois-je faire? Ai-je vraiment besoin de deux points d'extrémité séparés? Merci.

Était-ce utile?

La solution

vous pouvez le fixer de deux façons

1)

Uri baseAddress = new Uri("http://localhost:8000/ServiceModel");
ServiceHost selfHost = new ServiceHost(typeof(TestService), baseAdress);

selfHost.AddServiceEndpoint(typeof(IService1), new WSHttpBinding(), "Service");
selfHost.AddServiceEndpoint(typeof(IService2), new WSHttpBinding(), "Service1");

ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
selfHost.Description.Behaviors.Add(smb);

2)

ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.HttpGetUrl = new Uri("http://localhost:8000/ServiceModel");
selfHost.Description.Behaviors.Add(smb);

Autres conseils

Tout ce que vous devez faire est d'ajouter une adresse de base. vous avez encore deux séparés points d'extrémité.

ServiceHost selfHost = new ServiceHost(typeof(TestService), new Uri ("http://localhost:8080/ServiceModel")); 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top