كيفية العثور على ميناء فارغة لبدء WCF ServiceHost على شبكة الإنترنت

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

سؤال

وكيف يمكنني تحديد منفذ الامم المتحدة واستخدامها لبدء WCF ServiceHost لاستضافة الخادم المضيف المحلي الويب في؟

وأنا بدأت حاليا خدمتي تصل بشكل ثابت على HTTP: // المضيف المحلي: XXXX حيث XXXX هو قيمة ثابتة في قانون بلدي.

وأود أن استبدال XXXX مع GetUnusedPort () الكلمة ...

وأي أفكار؟

هل كانت مفيدة؟

المحلول

كان

وأفضل يمكن أن تجد في المحاولة حتى تجد مفتوح خيار واحد ...

<وأ href = "http://forums.devshed.com/net-development-87/c-how-to-determine-if-a-port-is-in-use-371148.html" يختلط = "noreferrer نوفولو"> 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;
        }
    }

نصائح أخرى

لماذا لا ندع للمستخدم اختيار أي منفذ أنها ترغب في استضافة الخدمة على؟ على سبيل المثال، إضافة قيمة إلى ملف تكوين التطبيق الخاص بك أن يحصل تمريرها إلى ServiceHost الخاص بك. يمكنك أيضا محاولة عشوائيا توليد عدد الميناء واختبار لمعرفة إذا كان مفتوحا، ثم كرر العملية إذا كان تطبيق آخر يستخدم بالفعل ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top