Warum muss die Http-Web-Request und IWebProxy Arbeit in seltsamen Zeiten

Nochmal eine Frage zu Web-proxy.

Hier ist mein code:

IWebProxy Proxya = System.Net.WebRequest.GetSystemWebProxy();
Proxya.Credentials = CredentialCache.DefaultNetworkCredentials;
HttpWebRequest rqst = (HttpWebRequest)WebRequest.Create(targetServer);

rqst.Proxy = Proxya;
rqst.Timeout = 5000;
try
{
    rqst.GetResponse();
}
catch(WebException wex)
{
    connectErrMsg = wex.Message;
    proxyworks = false; 
}

Dieser code hängt es sich das erste mal aufgerufen wird, für eine minute, zwei. Danach auf aufeinander folgende Aufrufe funktioniert es manchmal, aber nicht andere. Es auch nie, trifft den catch-block.

Nun der seltsame Teil. Wenn ich einen MessageBox.Show(msg) rufen Sie in der ersten code-Abschnitt, der vor der GetResponse() nennen dies alles zu jeder Zeit und ohne hängen. Hier ist ein Beispiel:

try
{
    //========Here is where I make the call and get the response========
    System.Windows.Forms.MessageBox.Show("Getting Response");
    //========This makes the whole thing work every time========


    rqst.GetResponse();
}
catch(WebException wex)
{
    connectErrMsg = wex.Message;
    proxyworks = false; 
}

Ich bin verblüfft darüber, warum verhält es sich so. Ich weiß nicht, ob das timeout funktioniert nicht (es ist in Millisekunden, nicht Sekunden, also sollte der timeout nach 5 Sekunden, oder?...) oder, was Los ist. Die meisten verwirrend ist, dass die message box aufrufen, macht alle arbeiten ohne hängen.

Also jede Hilfe und Vorschläge, was passiert ist, geschätzt. Dies sind die Art von Fehlern, die bringen mich absolut aus meinem Kopf.

EDIT und KORREKTUR:

OK, also ich habe getestet dieses und das problem wird verursacht, wenn ich versuche, Daten herunterladen von der URI, dass ich immer eine Antwort. Ich Teste die Verbindung mit GetResponse () - Methode mit einem WebRequest, aber ich bin das herunterladen der Daten mit einem WebClient. Hier ist der code für:

public void LoadUpdateDataFromNet(string url, IWebProxy wProxy)
{
    //Create web client
    System.Net.WebClient webClnt = new System.Net.WebClient();

    //set the proxy settings
    webClnt.Proxy = wProxy;
    webClnt.Credentials = wProxy.Credentials;

    byte[] tempBytes;
    //download the data and put it into a stream for reading
    try
    {
        tempBytes = webClnt.DownloadData(url); //<--HERE IS WHERE IT HANGS
    }
    catch (WebException wex)
    {
        MessageBox.Show("NEW ERROR: " + wex.Message);
        return;
    }

    //Code here that uses the downloaded data
}

Den WebRequest-und WebClient sind beide greifen auf die gleiche URL einer web-Pfad zu einer XML-Datei und der proxy ist die gleiche, die in der Methode erstellten an der Spitze von diesem post. Ich bin getestet, um zu sehen, ob das erstellte IWebProxy ist gültig für den angegebenen Pfad und die Datei und dann die Datei zu laden.

Das erste Stück code, den ich oben setzen und diesen code mit dem WebClient sind in separaten Klassen und berufen sind, zu unterschiedlichen Zeiten, doch die Verwendung einer message-box in der das erste bit des Codes noch macht die ganze Sache gut laufen, die verwirrt mich. Nicht sicher, was das alles ist, was hier passiert oder warum die message-Boxen und laufen/Debuggen in Visual Studio macht das Programm ausführen, OK. Vorschläge?

Was meinst du mit "nicht bestanden", wenn es nicht eine Ausnahme werfen? Was passiert, wenn Sie Schritt für Schritt durch es mit einem debugger.
Der code schlägt fehl = Ausnahme? Blue-screen-of-death? Nichts passiert?
Sie scheinen nicht zu werden, etwas zu tun mit der Antwort. Etwas mehr code wäre hilfreich.
Ich bin nicht etwas zu tun mit der Antwort. Ich möchte nur, es zu benutzen, stellen Sie sicher, dass die proxy-Einstellungen korrekt sind. Wir hatten so viele Probleme mit Gültiger proxy-Einstellungen für Benutzer unseres Programms. Ich war zu versuchen, die Lösung aus diesem thread: <stackoverflow.com/questions/2518390/...>
Veröffentlicht neue info. Sorry für den langen post.

InformationsquelleAutor Mike Webb | 2010-06-07

Schreibe einen Kommentar