Laden...

[erledigt] Webrequest Proxy Authentifizierung von IE

Erstellt von Amosius vor 11 Jahren Letzter Beitrag vor 11 Jahren 4.624 Views
A
Amosius Themenstarter:in
31 Beiträge seit 2010
vor 11 Jahren
[erledigt] Webrequest Proxy Authentifizierung von IE

Hallo,

ich habe ein Programm mit dem ich einen Webrequest durchführe. Dazu möchte ich die Proxy Einstellungen des Internet Explorers vewenden und auch die Credentials des angemeldeten Users.


HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.Timeout = timeout;
request.UserAgent = userAgent;
request.PreAuthenticate = true;

if (manualCredentials)
{
   request.Proxy.Credentials = this.proxy_credentials;
}
else
{
   request.UseDefaultCredentials = true;
}

HttpWebResponse res = (HttpWebResponse)request.GetResponse();

Problem 1: Hat der Anwender einen Proxy, so wirft die GetResponse-Methode eine Exception mit HTTP Statuscode 407 Proxy Authentifizierung notwendig. Nun frage ich mich warum der User nicht mitgegeben wird (default credentials)?

Problem 2: Aktuell fange ich den Fehler ab und zeige einen Dialog zur Eingabe von Name und Passwort an. Dann führe ich einen weiteren Request durch und setze die credentials manuell, bekomme dann aber einen HTTP Statuscode 400 (Bad Request - Die Anfrage-Nachricht war fehlerhaft aufgebaut).

Wie kann ich am einfachsten die Einstellungen des Internet Explorers mit dem angemeldeten Anwender verwenden?

Danke für eure Hilfe.

Amosius

3.170 Beiträge seit 2006
vor 11 Jahren

Hallo,

versuch mal in der App.config (oder Web.config) folgeneden Eintrag:

<system.net>
  <defaultProxy useDefaultCredentials="true" />
</system.net>

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

A
Amosius Themenstarter:in
31 Beiträge seit 2010
vor 11 Jahren

Hallo MarsStein,

habe ich getestet. Das Anwendungsverhalten hat sich leider nicht verändert.

Weitere Hinweise?

Grüße
Amosius

16.827 Beiträge seit 2008
vor 11 Jahren

MSDN: WebRequest.GetSystemWebProxy-Methode
MSDN: WebRequest.Credentials-Eigenschaft in Kombination mit CredentialCache.DefaultCredentials-Eigenschaft
Alles sauber dokumentiert und einfach zu finden.

W
872 Beiträge seit 2005
vor 11 Jahren

An sich solltest Du mit

WebRequest.GetSystemWebProxy()

die Proxy-Einstellung bekommen. Steht so in MSDN

A
Amosius Themenstarter:in
31 Beiträge seit 2010
vor 11 Jahren

Danke für eure Hinweise,

ich teste das beim Kunden und gebe euch eine Rückmeldung wie
es gelaufen ist.

Grüße
Amosius

A
Amosius Themenstarter:in
31 Beiträge seit 2010
vor 11 Jahren

Hallo,

vielen Dank an alle, es hat funktioniert und ich habe nun auch
die Hürde gefunden.

Mein aktueller Code mit dem es funktioniert:


            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
            request.Timeout = timeout;
            request.UserAgent = userAgent;
            request.PreAuthenticate = true;
            request.UseDefaultCredentials = true;

            request.Proxy = WebRequest.GetSystemWebProxy();

            if (null == proxy_credentials)
            {
                request.Proxy.Credentials = CredentialCache.DefaultCredentials;
            }
            else
            {
                request.Proxy.Credentials = this.proxy_credentials;
            }

Bislang habe ich immer die DefaultCredentials
für den request selbst gesetzt, aber nicht für den proxy im request. Nun setze ich
beides, einmal über UseDefaultCredentials und im Proxy nochmal. Letzter Schritt
hatte bislang gefehlt.

Danke an alle.

Amosius