"Unable to connect to remote server fail" in HttpWebRequest

Ich bin mit VSTS 2008 + C# + .Net 3.5 zu entwickeln, um eine Konsole-Anwendung, und ich sende Anfrage an einen anderen server (IIS 7.0 unter Windows Server 2008). Ich finde, wenn die Anzahl der Anfrage-threads sind groß (z.B. 2000 threads), der client wird die Fehlermeldung "Unable to connect to remote server Fehler" beim Aufruf von response = (HttpWebResponse)request.GetResponse().Meine Verwirrung ist -- ich habe timeout auf einen großen Wert, aber ich habe solche nicht-bestanden-Meldung innerhalb von einer minute. Ich denke, auch wenn die Verbindung wirklich größer als das, was IIS dienen könnten, client, sollten Sie nicht bekommen, wie nicht-bestanden-Meldung so bald, sollte es eine solche Nachricht nach der timeout-Zeit. Irgendwelche Kommentare? Irgendwelche Ideen, was falsch ist? Irgendwelche Ideen, um eine größere Anzahl von gleichzeitigen Anschluss serviert wird, die von IIS 7.0?

Hier ist mein code,

   class Program
    {
        private static int ClientCount = 2000;
        private static string TargetURL = "http://labtest/abc.wmv";
        private static int Timeout = 3600;

        static void PerformanceWorker()
        {
            Stream dataStream = null;
            HttpWebRequest request = null;
            HttpWebResponse response = null;
            StreamReader reader = null;
            try
            {
                request = (HttpWebRequest)WebRequest.Create(TargetURL);
                request.Timeout = Timeout * 1000;
                request.Proxy = null;
                response = (HttpWebResponse)request.GetResponse();
                dataStream = response.GetResponseStream();
                reader = new StreamReader(dataStream);

                //1 M at one time
                char[] c = new char[1000 * 10];

                while (reader.Read(c, 0, c.Length) > 0)
                {
                    Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message + "\n" + ex.StackTrace);
            }
            finally
            {
                if (null != reader)
                {
                    reader.Close();
                }
                if (null != dataStream)
                {
                    dataStream.Close();
                }
                if (null != response)
                {
                    response.Close();
                }
            }
        }

        static void Main(string[] args)
        {
            Thread[] workers = new Thread[ClientCount];
            for (int i = 0; i < ClientCount; i++)
            {
                workers[i] = new Thread((new ThreadStart(PerformanceWorker)));
            }

            for (int i = 0; i < ClientCount; i++)
            {
                workers[i].Start();
            }

            for (int i = 0; i < ClientCount; i++)
            {
                workers[i].Join();
            }           

            return;
        }
    }
Ich aktualisiert meine Antwort, können Sie fügen Sie die vollständige Ausnahme?

InformationsquelleAutor George2 | 2009-10-21

Schreibe einen Kommentar