Self-Hosting WCF mit Self-Hosting WebServer (Httplistener) auf dem gleichen Port. Möglich?

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

  •  20-09-2019
  •  | 
  •  

Frage

Ich arbeite an einer App und ich brauche eine Web-Schnittstelle, um es zu schaffen. Ich dachte über WCF mit einem Service für die Web-Oberfläche zur Verfügung zu stellen, und Selbst Host sowohl mit meiner Anwendung (kein IIS). Nun, wenn die beiden nicht den gleichen Port verwenden, wird der Browser über XSS beschweren ...

Ist das möglich? Ist das eine gute Idee?

Bearbeiten Nach einigen Untersuchungen, habe ich es geschafft, es funktioniert.

Hier ist der Webservice selbst Host Code:

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();

Und hier ist der Web-Host-Code:

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

Für den Webservice zur Arbeit, ich brauchte eine href zu tun <= "http://web.archive.org/web/20101113075636/http://blogs.msdn.com/b/anirbanc/archive/2008/ 14.05 / wcf-error-http-könnte-not-register-uRL-http-8000-your-Prozess-tut-nicht-haben-Zugriff-Rechte-to-this-namespace.aspx“rel = "nofollow noreferrer" > diese

War es hilfreich?

Lösung

Yep- funktioniert gut. HTTP.SYS abstrahiert die HTTP-Sachen, die WCF-Anwendungen und ermöglicht eine beliebige Anzahl von Prozessen, so lange den gleichen Port zu teilen, da sie alle mit unterschiedlichen Pfad-Präfixe sind. Ich tue dies die ganze Zeit genau dem gleichen Grund.

Das wird nicht funktionieren auf XP in IIS 5.1 oder mit den VS-Webserver, though- nur, wenn Sie versuchen wollten. Sie sind nicht HTTP.SYS basiert, so dass sie erwarten, dass ihre Häfen ausschließlich zu bekommen. Alles andere, obwohl (einschließlich XP mit 2 WCF-Hosts), du bist gut zu gehen.

Andere Tipps

Sounds Phantasie, werde ich diese beobachten. Wenn nichts anderes hilft, können Sie es als zwei separate Ports halten, aber dann vielleicht einen Reverse-Proxy verwenden, um den WCF-Endpunkt aussortieren?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top