Das Ausführen von Webanforderungen innerhalb einer Schleife funktioniert nur beim ersten Durchlauf

Ich nehme eine Zeichenkettennachricht und zerlege sie in Blöcke, damit ich sie an einen SMS-Dienst senden kann (der sie folglich nicht für Sie zerlegt). Nachdem ich meine Arbeit zum Aufteilen dieser Nachrichten erledigt habe, versuche ich, das resultierende Array zu durchlaufen und eine Webanforderung auszuführen. Das Problem ist, dass es nur für die erste Nachricht funktioniert und danach hängt. Nach kurzer Zeit erhalte ich die Fehlermeldung "Die Verbindung wurde unerwartet geschlossen." Dies tritt beim zweiten Versuch von GetResponse () auf. Ich habe hier ein paar andere Posts gesehen, in denen lediglich gesagt wurde, dass die Antwort- und Anforderungsströme geschlossen und freigegeben werden sollen. Das funktioniert bei mir überhaupt nicht. Hier ist mein Code aktuell:

private static void Main(string[] args)
{
    var oldMessage = GetFileString();
    Console.WriteLine(string.Format("Old message: {0}", oldMessage.Length));

    var newMessage = UrlPathEncodeString(oldMessage);
    Console.WriteLine(string.Format("New message: {0}", newMessage.Length));

    var brokenUp = SplitByLength(newMessage, 145).ToArray();
    for(var i = 0; i < brokenUp.Count(); i++)
    {
        brokenUp[i] = brokenUp[i].Insert(0, UrlPathEncodeString(string.Format("({0:D2} of {1:D2})", i + 1, brokenUp.Count())));
        Console.WriteLine(string.Format("Appended length: {0}", brokenUp[i].Length));
    }

    System.Net.ServicePointManager.DefaultConnectionLimit = 100;
    foreach (var block in brokenUp)
    {
        Thread.Sleep(1500);
        SendSms((HttpWebRequest)WebRequest.Create("http://172.20.5.214:90/method/sendsms"), block);
    }
    Console.ReadKey();
}

public static void SendSms(HttpWebRequest request, string message)
{
    //build the request
    var url = "http://ipaddress/method/sendsms";
    //var request = (HttpWebRequest)WebRequest.Create(url);
    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded";

    var fields = "CellNumber={0}&Message={1}";
    fields = string.Format(fields, "16021234567", message);

    var fieldsBytes = Encoding.UTF8.GetBytes(fields);
    request.ContentLength = fieldsBytes.Length;
    var length = fieldsBytes.Length;

    using (var requestStream = request.GetRequestStream())
    {
        requestStream.Write(fieldsBytes, 0, length);

        using (var response = request.GetResponse())
        {
            using (var responseStream = response.GetResponseStream())
            {
                responseStream.Close();
            }
        }
        requestStream.Close();
    }
}

public static byte[] ReadFully(Stream stream)
{
    var buffer = new byte[32768];
    using (var ms = new MemoryStream())
    {
        while (true)
        {
            int read = stream.Read(buffer, 0, buffer.Length);
            if (read <= 0)
                return ms.ToArray();
            ms.Write(buffer, 0, read);
        }
    }
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage