none
Proxy mit integrierter Authentifizierung, Sporadische 407-Fehler RRS feed

  • Frage

  • Hallo,

    meine Anwendung läuft als Desktopanwendung in einem Netz, in dem Internetzugriffe mittels Webproxy und integrierter Authentifizierung gemacht werden müssen.

    Den WebRequest initialisiere ich folgendermaßen:

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
    request.Proxy = WebRequest.GetSystemWebProxy();
    request.Proxy.Credentials = CredentialCache.DefaultCredentials;

    Die Zugriffe gehen auf eine Adresse (HTTPS), die ich auf den gleichen Rechnern aus dem IE einwandfrei erreichen kann.

    Die WebRequests gehen auch meist durch, jedoch bekomme ich ab und zu eine WebException: "(407) Proxyauthentifizierung erforderlich". Wenn mein Programm gleich anschließend einen neuen Versuch macht, klappt es ebenso wenig. Etwas später oder nach Neustart des Programms tut es idR wieder.

    Wie kann es sein, dass es einmal klappt und einmal nicht?
    Kann ich meinen Request anders stellen, damit es zuverlässiger klappt?

    Die abgerufene Adresse ist immer die selbe.

    Danke im Voraus,

    Markus
    Freitag, 18. September 2009 10:09

Antworten

  • Hallo torfnase,

    Gibt es ab und zu Abrechnungen in dem Netzwerk?

    Hab noch folgenden Code gefunden:

    public string GetWebPage(string strURL)
            {
               
    //stores the html returned by the server
               
    string strResult = "";

               
    //build the http request
                HttpWebRequest webRequest;
                webRequest = (HttpWebRequest)WebRequest.Create(strURL);

                IWebProxy proxy = WebRequest.GetSystemWebProxy();
                proxy.Credentials = CredentialCache.DefaultCredentials;

                webRequest.Proxy = proxy;
                webRequest.Method =
    "GET";
                webRequest.UserAgent =
    "Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+.NET+CLR+1.1.4322)";
                webRequest.Timeout = -1;

               
    //initiate contact with the server
                HttpWebResponse webResponse;
                webResponse = (HttpWebResponse)webRequest.GetResponse();

               
    //download the HTML
               
    using (StreamReader sr = new StreamReader(webResponse.GetResponseStream()))
                {
                   
    //read the html
                    strResult = sr.ReadToEnd();
                   
    // Close and clean up the StreamReader
                    sr.Close();
                }

               
    return strResult;
            }

    Grüße,

    Robert

    Dienstag, 22. September 2009 10:50
    Moderator

Alle Antworten

  • Hallo Markus,

    Schau Dir mal die folgenden Links an. Vielleicht können Sie Dir weiter helfen.

    http://social.msdn.microsoft.com/Forums/en-US/ssdsgetstarted/thread/fe3a7491-9315-4dad-885a-e1a13c90daec

    http://www.eggheadcafe.com/community/aspnet/13/10053134/proxy-authentication-in-c.aspx

    IIS 5.0: Error message "HTTP/1.1 407 proxy authentication required" à http://support.microsoft.com/default.aspx?scid=kb;en-us;248020

    Versuch das mal anders zu bauen:

    WebProxy proxyObject = new WebProxy("http://proxyserver:80/");
    
    proxyObject.Credentials = CredentialCache.DefaultCredentials;
    
    webClient.Proxy = proxyObject;

     

    Grüße,

    Robert

    Samstag, 19. September 2009 19:00
    Moderator
  • Hallo Markus,

    Hat Dir die Antwort geholfen?

    Grüße,
    Robert

    Dienstag, 22. September 2009 07:25
    Moderator
  • Hallo Robert,

    danke für die Antwort. Geholfen hat sie mir leider nicht wirklich.

    Auf den Clients ist über die Windows-Domäne überall im IE der Proxy eingetragen. Sonst kämen die Leute nicht ins Web und würden sich beschweren :-)
    Gerade das macht den Charme von GetSystemWebProxy aus. Ich kann natürlich den Proxyserver von Hand setzen, aber dann müsste man das redundant in der config-Datei pflegen. Gibt es denn berechtigten Grund zur Annahme, dass GetSystemWebProxy nicht das gewünschte liefert?

    Die drei Links hatten leider nur am Rand mit dem Problem zu tun.

    Gruß

    Markus
    Dienstag, 22. September 2009 09:01
  • Hallo torfnase,

    Gibt es ab und zu Abrechnungen in dem Netzwerk?

    Hab noch folgenden Code gefunden:

    public string GetWebPage(string strURL)
            {
               
    //stores the html returned by the server
               
    string strResult = "";

               
    //build the http request
                HttpWebRequest webRequest;
                webRequest = (HttpWebRequest)WebRequest.Create(strURL);

                IWebProxy proxy = WebRequest.GetSystemWebProxy();
                proxy.Credentials = CredentialCache.DefaultCredentials;

                webRequest.Proxy = proxy;
                webRequest.Method =
    "GET";
                webRequest.UserAgent =
    "Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+.NET+CLR+1.1.4322)";
                webRequest.Timeout = -1;

               
    //initiate contact with the server
                HttpWebResponse webResponse;
                webResponse = (HttpWebResponse)webRequest.GetResponse();

               
    //download the HTML
               
    using (StreamReader sr = new StreamReader(webResponse.GetResponseStream()))
                {
                   
    //read the html
                    strResult = sr.ReadToEnd();
                   
    // Close and clean up the StreamReader
                    sr.Close();
                }

               
    return strResult;
            }

    Grüße,

    Robert

    Dienstag, 22. September 2009 10:50
    Moderator
  • Hallo Markus,

    Hat Dir die Antwort geholfen?

    Grüße,
    Robert

    Freitag, 25. September 2009 10:54
    Moderator
  • Hallo Markus,

    Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,
    Robert

    Montag, 5. Oktober 2009 11:51
    Moderator
  • Geholfen im dem Sinne, dass ich noch einmal etwas ausprobieren kann, hat sie.
    Geholfen im Sinne einer Problemlösung hat sie nicht.

    Da es anscheinend von Bedeutung ist, dass im Thread irgend etwas grün ist, lassen wir das so stehen.

    Danke und viele Grüße

    Markus
    Dienstag, 6. Oktober 2009 07:15