Laden...

Grundsatzfrage wegen NetworkCredential usw.

Erstellt von DarkSnake vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.283 Views
DarkSnake Themenstarter:in
24 Beiträge seit 2007
vor 16 Jahren
Grundsatzfrage wegen NetworkCredential usw.

ich hab schon die forenssuche benutzt, nur hab ich keine direkte hilfe für mich gefunden.

ich hab mehre beispiele gefunden, wie folgendes
http://blog.veloursnebel.de/PermaLink,guid,3ac2007a-dea3-4103-b7da-9263e733e824.aspx

jetzt habe ich aber eins zwei probleme dabei...

als erstes ist mir nicht ganz klar, wie folgendes funktionieren soll


    if(username == null || password == null)

    {

        NetworkCredential networkCredential = new NetworkCredential(username, password);

        webRequest.PreAuthenticate = true;

        webRequest.Credentials = networkCredential;

    }

wenn ich es richtig verstehe, wird es dies nie durchlaufen und wenn doch, hat es keine angaben für username und password.

ich hab das ganz auch schon mit einer anderen homepage versucht....
nur dort hab ich gleich das zweite problem, wenn ich mich auf einen login-geschützen-bereich einloge, kriege ich daten zurück. wenn ich mich aber auf die startseite einloge (welche weiterleiten würde auf die, die geht) kriege ich eine fehlermeldung:

WebResponse webResponse = webRequest.GetResponse();

Der Remoteserver hat einen Fehler zurückgegeben: (401) Nicht autorisiert.

kann es sein, dass ich mich mit dieser methode jedes mal aufs neue einlogen muss?

ich würde mich hingegen auch schon über einen guten link oder so freuen.
...hab echt mühe mich in diese thema einzuarbeiten.

ps: sorry, wenn das schon mal so behandelt wurde

J
537 Beiträge seit 2007
vor 16 Jahren

Hallo,

ich denke die Abfrage ist verkehrt herum und müsste eigentlich so lauten:
if(!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))

DarkSnake Themenstarter:in
24 Beiträge seit 2007
vor 16 Jahren

Hallo,

ich denke die Abfrage ist verkehrt herum und müsste eigentlich so lauten:
if(!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))

hab es gleich mal versucht (dachte mir doch, dass der code komisch aussieht 😉 )

im ersten fall (eine seite, bei der man schon eingelogt sein muss) klapt es auch.

aber nicht, wenn ich über die startseite gehe, welche mich weiterleitet.

... ich glaub wirklich, das mir bei diesem gebiet (einlogen, eingelogt bleiben usw.) einfach ein gewisses grundwissen fehlt....

J
537 Beiträge seit 2007
vor 16 Jahren

Du kannst beim WebRequest irgendwo angeben, das er Rredirekts folgen soll, evtl. hilft das schon.

DarkSnake Themenstarter:in
24 Beiträge seit 2007
vor 16 Jahren

Du kannst beim WebRequest irgendwo angeben, das er Rredirekts folgen soll, evtl. hilft das schon.

danke für denn tip
werde mich gleich mal informieren

DarkSnake Themenstarter:in
24 Beiträge seit 2007
vor 16 Jahren

hab mich jetzt nochmal weiter informiert
leider ist es mir immer noch nicht ganz klar

mein derzeitiger test-code sieht so aus:


WebResponse webResponse;
NetworkCredential networkCredential;
private void button2_Click(object sender, EventArgs e)
{
    networkCredential = new NetworkCredential(tbUser.Text, tbPassword.Text);
    WebRequest webRequest = WebRequest.Create(tbURL.Text);
    webRequest.Credentials = networkCredential;
    try
    {
        webResponse = webRequest.GetResponse();
        MessageBox.Show(webResponse.Headers.ToString());
        
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

private void button4_Click(object sender, EventArgs e)
{
    webResponse.Close();
}

private void button3_Click(object sender, EventArgs e)
{
    WebRequest webRequest = WebRequest.Create(tbURL.Text);
    webRequest.Credentials = networkCredential;
    try
    {
        webResponse = webRequest.GetResponse();
        MessageBox.Show(webResponse.Headers.ToString());

    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

ich weiss, dass er nicht gerade schön ist, aber zum testen reichts.

was ich mich jetzt schon die ganz zeit frage bzw. vll einfach nicht begreife, ist folgendes.
soweit ich es verstehe, beinhaltet networkCredential meine login-daten.
nur muss ich die jetzt jedes mal, wen ich eine seite aufrufe, diese mitgeben, oder gibt es da nicht irgend eine automatische möglichkeit? (bin vll. einfach browser-geschädigt mit denn ganzen sessions usw.)

vielen dank schon mal für eure hilfe

ps:
der folgende code steht so auch im ".NET BlogBook Ausgabe 5"


    if(username == null || password == null)

    {

        NetworkCredential networkCredential = new NetworkCredential(username, password);

        webRequest.PreAuthenticate = true;

        webRequest.Credentials = networkCredential;

    }