Tengo un servicio net.tcp WCF, y me gustaría que el sistema operativo escoja el puerto que debería escuchar. Así que configuré el puerto en 0 en mi URI, y netstat
confirma que el sistema operativo ha elegido un puerto en el rango de 5000.¿Cómo puedo obtener el puerto que escucha un servicio WCF?
¿Cómo puedo encontrar el puerto real que se ha elegido, en código, dentro del proceso de servicio?
algo de código para mostrar lo que he intentado:
Type serviceType = ...;
Uri address = new Uri("net.tcp://0.0.0.0:0/Service/");
ServiceHost serviceHost = new ServiceHost(serviceType, address);
ServiceEndpoint endPoint = serviceHost.AddServiceEndpoint(type, binding, "");
int port1 = endPoint.ListenUri.Port; // returns 0
int port2 = serviceHost.BaseAddresses.First().Port; // also returns 0
Es bastante inusual para obtener un servicio para escuchar en un puerto aleatorio - ¿Existe una razón por la que quiere hacer esto? – Cocowalla
@Cocowalla: el servicio es parte de un proceso de trabajo, por lo que puede haber más de uno por vez, y estamos buscando soluciones que no involucren .NET TCP Port Sharing. – ngoozeff
posible duplicado de [¿Cómo puedo obtener la dirección/puerto de escucha de un servicio WCF?] (Http://stackoverflow.com/questions/2207348/how-can-i-get-the-listening-dress-port-of -a-wcf-service) – mafu