vexed! POST gibt einen 302-Fehler beim Verschieben eines gefundenen Objekts in HttpWebRequest @ zurüc

Jemand bitte helfen - habe mit diesem miesen Problem zu kämpfen!

Was mache ich? - Ich habe eine ASPX-Seite, von der ich ein GET und dann einen POST zu einem @ erstell HTTPS Seite mit Blick darauf, sich anzumelden. Ich habe ziemlich viel Zeit damit verbracht, meine GET- und POST-Konstruktion mit einem Browser-GET / POST zu vergleichen, der Fiddler (Protocol Analyzer) verwendet, und meine Anforderungen sind in Ordnung.

Wenn ich mich jedoch über den Browser anmelde, funktioniert alles einwandfrei und es meldet sich an. Wenn ich meine Seite starte, kann ich den korrekten GET und POST sehen, aber ich erhalte einen 302 gefundenen 'object moved error'

Ursprünglich dachte ich, dies sei ein Cookie-Problem, aber nach vielen Experimenten bin ich mir ziemlich sicher, dass dies nichts mit Cookies zu tun hat. Ich habe Cookies und Javascript im Browser deaktiviert und versucht, und die Seiten funktionieren auch ohne. Ich habe dann den genauen GET / POST simuliert.

Das ist meine Situation:

Meine GET und die Browser GET sind genau die GLEICHENDie 200-OK-Antwort von der Site ist EXAKT die gleiche, AUSSER drei VIEWSTATE-Variablen mit geringfügig unterschiedlichen Längen (warum? Warum anders, auch wenn GET gleich ist?) Mein POST und der POST des Browsers sind bis auf die 3 Viewstate-Variablen genau gleich (ich fülle sie korrekt aus dem GET aus)Und dennoch meldet sich der Browser an, während ich einen 302 found / object moved-Fehler erhalte.

Ein paar andere Dinge -

a) Ich habe die POST-Antwort von einem kürzlich veröffentlichten Browser-POST kopiert und meine POST-Parameter durch diesen Browser-POST ersetzt. Dadurch habe ich die richtige Antwort erhalten! Dies zeigt an, dass
- meine Header sind in Ordnung
- mein Code-Setup / meine Umgebung usw. sind in Ordnung
- Ein Fehler in den VIEWSTATE-Werten, der nur darauf zurückzuführen ist, dass der Browser ihn an erster Stelle an mich gesendet hat (es gibt keine Fehler beim Parsen der GET VIEWSTATE-Variablen und bei der Verwendung in POST. Das ist völlig in Ordnung.)

aktualisiere Ich habe auch versucht, WebClient nur zu überprüfen - kein Unterschied, gleiche 302.aktualisiere Das verschobene Objekt zeigt im Grunde auf eine Fehlerseite, die besagt, dass ein schwerwiegender Fehler aufgetreten ist - der POST verursacht einen Fehler auf dem Server, und der EINZIGE Unterschied zwischen dem guten POST (des Browsers) und meinem POST ist der Viewstate Variablen

So - was mache ich falsch Warum quält mich diese grausame Welt? !!

(PS - ein weiterer Unterschied in der Browser-Reihenfolge, nicht sicher, wie es darauf ankommt)

Browser:<br>CONNECT<br>GET<br>GET (for a favicon, which returns an error)<br>CONNECT<br>POST (success)<br>Me:<br>CONNECT<br>GET<br>POST (flaming failure, 302 - page moved)<br>

und für diejenigen, die sich interessieren, mein POST-Header-Konstruktionscode

    HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(URL);
    myRequest.UserAgent = chromeUserAgent;

    //myRequest.CookieContainer = cCookies;
    myRequest.ContentType = "application/x-www-form-urlencoded";
    myRequest.Accept = chromeAccept;
    myRequest.Referer = url;
    myRequest.AllowAutoRedirect = false;
    myRequest.Host = "thesitethatskillingme.com";
    myRequest.Headers.Add("Origin", "https://thesitethatskillingme.com");
    myRequest.Headers.Add("Accept-Encoding", chromeAcceptEncoding);
    myRequest.Headers.Add("Accept-Language", chromeAcceptLanguage);
    myRequest.Headers.Add("Accept-Charset", chromeAcceptCharset);
    myRequest.Headers.Add("Cache-Control", "max-age=0");
    myRequest.ServicePoint.Expect100Continue = false;
    myRequest.Method = "POST";
    myRequest.KeepAlive = true;

    ASCIIEncoding ascii = new ASCIIEncoding();
    byte[] bData = ascii.GetBytes(data);

    myRequest.ContentLength = bData.Length;

    using (Stream oStream = myRequest.GetRequestStream())
        oStream.Write(bData, 0, bData.Length);

... und dann Stream lesen usw. keine Cookies.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage