Self-Hosting WCF con self-hosting WebServer (HttpListener) sulla stessa porta. Possibile?

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

  •  20-09-2019
  •  | 
  •  

Domanda

Sto lavorando su un'applicazione e ho bisogno di fornire un'interfaccia web ad esso. Stavo pensando di utilizzare WCF per fornire un servizio per l'interfaccia web, e di auto-host sia con la mia app (senza IIS). Ora, se quei due non si utilizza la stessa porta, il browser si lamenterà di XSS ...

È possibile? Si tratta di una buona idea?

Modifica Dopo alcune indagini, sono riuscito a farlo funzionare.

Ecco il codice webservice auto-host:

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

Ed ecco il codice host web:

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

Per il webservice al lavoro, avevo bisogno di fare questo

È stato utile?

Soluzione

Yep- funziona bene. HTTP.SYS astrae la roba HTTP che utilizza WCF, e permette un numero arbitrario di processi di condividere la stessa porta finché sono tutti utilizzando diversi prefissi di percorso. Lo faccio tutto il tempo esattamente per lo stesso motivo.

Questo non funziona su XP in IIS 5.1 o con il server web VS, anche se-nel caso in cui si andavano a provare. Non sono HTTP.SYS base, in modo che si aspettano di ottenere i loro porti esclusivamente. Tutto il resto, anche se (tra cui XP con 2 host WCF), sei a posto.

Altri suggerimenti

Suoni di fantasia, dovrò guardare questo uno. Se non altro funziona, si potrebbe tenerlo come due porte separate, ma poi magari utilizzare un proxy inverso per risolvere l'endpoint WCF?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top