Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Πρόβλημα με HttpWebResponse. C#.NET

Îåêßíçóå áðü ôï ìÝëïò Brolly. Τελευταία δημοσίευση από το μέλος Brolly στις 25-02-2008, 17:01. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  25-02-2008, 14:53 40471

    Πρόβλημα με HttpWebResponse. C#.NET

    string strToFind = "\"ipaddress\">";
    string requestLine = "";

    try
    {
        request = (HttpWebRequest)WebRequest.Create(myWanIp);
        request.Method = "GET";
        response = (HttpWebResponse)request.GetResponse();

        StreamReader reader = new StreamReader(response.GetResponseStream());

        while (!reader.EndOfStream)
        {
            requestLine = reader.ReadLine();
            if (requestLine.Contains(strToFind))
            {
                requestLine = requestLine.Replace("<p class=\"ipaddress\">", "");
                requestLine = requestLine.Replace("</p>", "");
                ExtIPTextBox.Text = requestLine;
                break;
            }
        }
    }


    Εχω τον παραπανω κωδικα σε ενα app που περνει Εσωτερικο και Εξωτερικο IP/Hostname.Όλα ειναι μια χαρα. Το εχω κανει να τα παιρνει στο Load της φορμας.
    Εχω και ενα Refresh button με το οποιο ξανα εκτελω τις συναρτησεις που περνουν IP/Hostname.Οταν λοιπον πατησω μια φορα το Refresh τα ξαναπαιρνει ολα μια χαρα.Οταν ομως το πατησω και δευτερη φορα τοτε κολαει το app στην συναρτηση που παιρνω το εξωτερικο IP δηλαδη σ'αυτην που σας δειχνω παραπανω.Εβαλα ενα breakpoint και ειδα οτι κολαει την 2η φορα που πατιετε το refresh εδω :
    response = (HttpWebResponse)request.GetResponse(); ...

    Thanks in advance.
  •  25-02-2008, 15:18 40473 σε απάντηση της 40471

    Απ: Πρόβλημα με HttpWebResponse. C#.NET

    Θα σου πρότεινα να μη χρησιμοποιείς το request ως global αντικείμενο αλλά local δηλαδή κάπως έτσι:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    string strToFind = "\"ipaddress\">";
    string requestLine = "";

    try
    {
    using(HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myWanIp))
    {
    request.Method = "GET";
    response = (HttpWebResponse)request.GetResponse();

    StreamReader reader = new StreamReader(response.GetResponseStream());

    while (!reader.EndOfStream)
    {
    requestLine = reader.ReadLine();
    if (requestLine.Contains(strToFind))
    {
    requestLine = requestLine.Replace("<p class=\"ipaddress\">", "");
    requestLine = requestLine.Replace("</p>", "");
    ExtIPTextBox.Text = requestLine;
    break;
    }
    }
    }
    }

    Mόλις φτάσεις στο τέλος του using block θα γίνουν release όλα τα resources που τυχόν κρατάει και έτσι (φαντάζομαι) ότι δε θα σου δημιουργεί προβήματα όταν ξαναδημιουργείς.

    HTH.


    MSc Konstantinos Pantos
    MCP Software Engineer
    http://blog.pantos.name
    http://kostas.pantos.name
  •  25-02-2008, 15:34 40474 σε απάντηση της 40473

    Απ: Πρόβλημα με HttpWebResponse. C#.NET

    Καταρχην σε ευχαριστω για την απαντηση.

    Tο ειχα χρησιμοποιησει και πριν με using αλλα επερνα αυτο  -> Error    1    'System.Net.HttpWebRequest': type used in a using statement must be implicitly convertible to 'System.IDisposable'    C:\Documents and Settings\Admin\My Documents\Visual Studio 2005\Projects\IPViewer\IP Viewer\IP Viewer\Form1.cs    57    17    IP Viewer

  •  25-02-2008, 15:54 40476 σε απάντηση της 40474

    Απ: Πρόβλημα με HttpWebResponse. C#.NET

    Έχεις δίκιο, θυμόμουν λάθος ότι το WebRequest υλοποιεί το IDisposable.

    Μπορείς παρ' όλ' αυτά να δοκιμάσεις να καθαρίσεις μόνος σου τα αντικείμενα που χρησιμοποείς

    δοκίμασε για παράδειγμα να κάνεις

    // Cleanup the streams and the response.
    reader.Close ();
    dataStream.Close ();
    response.Close ();

    ΗΤΗ.


    MSc Konstantinos Pantos
    MCP Software Engineer
    http://blog.pantos.name
    http://kostas.pantos.name
  •  25-02-2008, 17:01 40479 σε απάντηση της 40476

    Απ: Πρόβλημα με HttpWebResponse. C#.NET

    Done ;) Ευχαριστω.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems