Frage

Wie kann ich einen nicht verwendeten Port bestimmen, um einen WCF Servicehost startet einen lokalen Host Web-Server auf Host?

Ich fange gerade meinen Dienst auf statisch auf http: // localhost: XXXX XXXX ein statischer Wert ist in meinem Code.

Ich möchte die XXXX mit einem GetUnusedPort () aufrufen ...

ersetzen

Alle Gedanken?

War es hilfreich?

Lösung

Best ich finden konnte, war der Versuch, bis Sie eine offene Option ...

http://forums.devshed.com/net-development-87/c-how-to-determine-if-a-port-is-in-use-371148.html

    public static bool TryPortNumber(int port)
    {
        try
        {

            using (var client = new System.Net.Sockets.TcpClient(new System.Net.IPEndPoint(System.Net.IPAddress.Any, port)))
            {
                return true;
            }
        }
        catch (System.Net.Sockets.SocketException error)
        {
            if (error.SocketErrorCode == System.Net.Sockets.SocketError.AddressAlreadyInUse /* check this is the one you get */ )
                return false;
            /* unexpected error that we DON'T have handling for here */
            throw error;
        }
    }

Andere Tipps

Warum lassen Sie nicht der Benutzer wählen, welcher Port sie wollen auf den Dienst hosten? Um zum Beispiel einen Mehrwert für Ihre Anwendung der Konfigurationsdatei hinzufügen, die zu Ihrem Servicehost übergeben werden. Sie könnten auch zufällig versuchen, eine Portnummer und Test zu erzeugen, um zu sehen, wenn es geöffnet ist, dann wiederholen Sie den Vorgang, wenn eine andere Anwendung bereits es verwendet, wird.

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