Autoalojamiento WCF con autoalojamiento WebServer (HttpListener) en el mismo puerto. ¿Posible?

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

  •  20-09-2019
  •  | 
  •  

Pregunta

Estoy trabajando en una aplicación y tengo que proporcionar una interfaz web a la misma. Estaba pensando acerca del uso de WCF para dar servicio a la interfaz web, y la auto-anfitrión tanto con mi aplicación (sin IIS). Ahora bien, si los dos no están utilizando el mismo puerto, el navegador se quejará de XSS ...

¿Es esto posible? ¿Es esta una buena idea?

Editar Después de algunas investigaciones, me las he arreglado para hacer que funcione.

Aquí está el código de auto-servicio web 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();

Y aquí está el código de alojamiento web:

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

Para el servicio web para trabajar, que tenía que hacer este

¿Fue útil?

Solución

Yep- funciona bien. HTTP.SYS abstrae las cosas HTTP que utiliza WCF, y permite que un número arbitrario de procesos para compartir el mismo puerto, siempre y cuando todos están utilizando diferentes prefijos de ruta. Lo hago todo el tiempo por exactamente la misma razón.

Esto no funcionará en XP en IIS 5.1 o con el servidor web VS, aunque-en caso de que se va a tratar. No HTTP.SYS están basados, por lo que esperan obtener sus puertos exclusivamente. Cualquier otra cosa, aunque (incluyendo XP con 2 anfitriones WCF), ya está bueno para ir.

Otros consejos

Sonidos de fantasía, voy a tener que ver a éste. Si nada de esto funciona, puede mantenerlo como dos puertos distintos, pero a continuación, utilizar tal vez un proxy inverso para solucionar el punto final de WCF?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top