WCF auto-hébergement avec WebServer auto-hébergement (HttpListener) sur le même port. Possible?

StackOverflow https://stackoverflow.com/questions/1732115

  •  20-09-2019
  •  | 
  •  

Question

Je travaille sur une application et je dois fournir une interface Web pour elle. Je pensais à l'aide de WCF pour fournir un service pour l'interface Web, et l'auto-hôte à la fois avec mon application (pas IIS). Maintenant, si ces deux n'utilisent pas le même port, le navigateur se plaindra XSS ...

Est-ce possible? Est-ce une bonne idée?

EDIT Après enquête, j'ai réussi à le faire fonctionner.

Voici le code auto-hôte webservice:

var serviceHost = new ServiceHost(typeof(CalculatorService));
serviceHost.AddServiceEndpoint(typeof (ICalculator), new WSHttpBinding(), "http://localhost:8000/webservice");
serviceHost.Open();

Console.WriteLine("CalcService is running.");
Console.WriteLine("Press Enter to terminate the service.");
Console.ReadLine();
serviceHost.Close();

Et voici le code hôte web:

var listener = new HttpListener();
listener.Prefixes.Add("http://localhost:8000/webconsole/");
listener.Start();
Console.WriteLine("listening");
while(true)
{
    HttpListenerContext context = listener.GetContext();
    /* ... */
}

Pour le webservice de travailler, je devais faire cette

Était-ce utile?

La solution

Yep- fonctionne très bien. HTTP.SYS abstraction des choses HTTP WCF utilise, et il permet à un nombre arbitraire de processus pour partager le même port que tant qu'ils sont tous en utilisant différents préfixes de chemin. Je le fais tout le temps exactement pour la même raison.

Cela ne fonctionnera pas sur XP dans IIS 5.1 ou avec le serveur Web VS, juste au cas où si-vous alliez essayer. Ils ne sont pas HTTP.SYS base, donc ils attendent d'obtenir leurs ports exclusivement. Tout le reste, bien que (y compris XP avec 2 hôtes WCF), vous êtes bon pour aller.

Autres conseils

Sons de fantaisie, je vais devoir regarder celui-ci. Si rien ne fonctionne, vous pouvez le garder comme deux ports distincts mais peut-être utiliser un proxy inverse pour régler le point de terminaison WCF?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top