Ho un servizio WCF net.tcp e vorrei che il sistema operativo selezionasse la porta su cui doveva essere ascoltato. Quindi ho impostato la porta su 0 nel mio URI, e netstat
conferma che il sistema operativo ha scelto una porta nell'intervallo 5000.Come posso ottenere la porta su cui è in ascolto un servizio WCF?
Come posso trovare la porta effettiva che è stata selezionata, in codice, all'interno del processo di servizio?
del codice per mostrare quello che ho provato:
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
È piuttosto raro che un servizio venga ascoltato su una porta a caso: c'è un motivo per cui vuoi farlo? – Cocowalla
@Cocowalla: il servizio fa parte di un processo di lavoro, quindi possono essercene più di una alla volta e stiamo esaminando soluzioni che non implicano la condivisione di porte TCP .NET. – ngoozeff
possibile duplicato di [Come posso ottenere l'indirizzo di ascolto/porta di un servizio WCF?] (Http://stackoverflow.com/questions/2207348/how-can-i-get-the-listening-address-port-of -a-wcf-service) – mafu