Ausnahme:"Die Anfrage wurde abgebrochen: Die Verbindung wurde unerwartet geschlossen" Beim aufrufen der beiden Methoden dasselbe Objekt

Ich habe ein problem, dass viele Menschen erlebt haben, aber alle die Lösung, die online verfügbar sind, sind auf Ihre spezifische Szenarien. Ich habe versucht, die Vorschläge zur Verfügung, aber noch kein Glück in der wha, die ich versucht habe war:

1.) req.KeepAlive = false;
2.) req.ProtocolVersion = HttpVersion.Version10; (this solved a different exception that I was getting)

Habe ich zwei Methoden der übergabe von XML-string an den server und antwortet wieder die beiden Methoden sind:

public string userDeviceQuery(string userID)
    {
        string query = "xml=<query>";
        query += "<appInfo>";
        query += "<appID>" + appID + "</appID>";
        query += "<appCertificate>" + appCertificate + "</appCertificate>";
        query += "</appInfo>";
        query += "<userDevicesQuery>";
        query += "<userID>";
        query += userID;
        query += "</userID>";
        query += "</userDevicesQuery>";
        query += "</query>";

        using (Stream str = req.GetRequestStream())
        {
            str.Write(System.Text.Encoding.ASCII.GetBytes(query), 0, query.Length);
        }

        WebResponse res = req.GetResponse();

        string stringResponse;
        using (StreamReader reader = new StreamReader(res.GetResponseStream()))
        {
            stringResponse = reader.ReadToEnd();
        }

        string result = parseDeviceQueryRes(stringResponse);
        return result;
    }

UND

public void logoutOfEM(string deviceName)
    {
        string lgRequest = "xml=<request>";
               lgRequest += "<appInfo>";
               lgRequest += "<appID>" + appID + "</appID>";
               lgRequest += "<appCertificate>" + appCertificate + "</appCertificate>";
               lgRequest += "</appInfo>";
               lgRequest += "<logout>";
               lgRequest += "<deviceName>";
               lgRequest += deviceName;
               lgRequest += "</deviceName>";
               lgRequest += "</logout>";
               lgRequest += "</request>";

         using (Stream str = req.GetRequestStream())
        {
            str.Write(System.Text.Encoding.ASCII.GetBytes(lgRequest), 0, lgRequest.Length);
        }

        WebResponse res = req.GetResponse();

        using (StreamReader reader = new StreamReader(res.GetResponseStream()))
        {
            stringResponse = reader.ReadToEnd();
        }
        string stringResponse = reader.ReadToEnd();
    }

Beide sind Teil einer Klasse namens EMAPI. Ich kann beide Methoden verwenden nur fein getrennt, aber wenn Sie versuchen, verwenden Sie back-to-back mit dem gleichen Objekt, EMAPI bekomme ich die exception wie oben beschrieben. Ich bin mir nicht sicher, was die Ursache für die Verbindung zu schließen, würde ich mag in der Lage sein, um Sie öffnen und schließen es mit einem de-Konstruktor, wenn möglich.

Für diejenigen, die neugierig sind, dieser code befasst sich mit Cisco Extension Mobility-API, die erste Methode fragt den server ab, um ein Gerät, mit dem Sie angemeldet sind, die zweite Methode meldet den Benutzer von diesem Gerät.

Danke für die Hilfe.

  • Auf einem nicht verwandten note, die ich verwenden würde, die Klasse stringbuilder für effizient, wenn gebaut, riesige + Streicher.
  • Können Sie bitte näher auszuführen, warum ist StringBuidler besser ist, wenn die Verkettung von strings?
  • dotnetperls.com/stringbuilder-performance
  • Haben Sie überprüfen Sie den Zustand der Verbindung nach dem ersten Aufruf. Es kann der Fall, dass die Verbindung geschlossen durch remote-server.
  • Oh wow, ich habe über 15 Anfragen in meinem code mit string, werde ich alle beheben. Das könnte lösen die Langsamkeit, die ich erlebe. Tahnks!!
  • Die Verbindung wird automatisch geschlossen nach Aufruf einer Methode, das ist, warum ich bin nicht in der Lage, rufen Sie die zweite Methode. Ich bin nicht sicher, warum es schließt sich automatisch. Ich kann instanziieren der EMAPI wieder und rufen Sie die zweite Methode, aber es muss eine bessere Lösung

InformationsquelleAutor laitha0 | 2013-07-24
Schreibe einen Kommentar