Fehler in C#-Webrequest

Um aus C# herraus HTTP Anfragen zu senden verwendet man im Allgemeinen die HttpWebRequest (geerbt von WebRequest) Klasse.

Bei einem jetzigen Projekt wo es um eine REST-Schnittstelle geht wird HTTP-Basic Auth zur Authentifizierung genutzt. Und da zeigt sich eine Schwäche bei der der Klasse die Mark von IntelliTechtur beschreibt.
Dabei geht es darum das 2 Requests gesendet werden. Beim 1. Request wird eiskalt die Basic-Auth weg gelassen.. wenn der Webservice nun keinen 4xx (nicht 2xx) sendet würde die Klasse es womöglich nicht nochmal probieren. Aber da der Code kommt gibt es wenige milisekunden später einen 2. mit Basic Auth.

Um dieses Problem zu umgehen empfielt mark den Basic-Auth-Token selbst zu berechnen und als Header mit zu senden:

/* http://mark.michaelis.net/Blog/CallingWebServicesUsingBasicAuthentication.aspx */
byte[] credentialBuffer = new UTF8Encoding().GetBytes(username + ":" +password);
req.Headers["Authorization"] ="Basic " + Convert.ToBase64String(credentialBuffer);

und siehe da.. nur noch ein Request..

Echt sinnlos seine Zeit damit zu verschwenden… 🙁

 

Links:

Über Danny Sotzny

Hallo, ich bin Danny Sotzny und bin Software- entwickler und Fotograf. Dabei beschäftige ich mich mit aktuellen Technologien und bekannten Problemen. Schwerpunkte setze ich bei der Webentwicklung (PHP/JS) und der Software- entwicklung mit .NET (C#). Der Blog dient für mich selbst als Gedächtnishilfe für typische und alltägliche Probleme, aber auch persönliche Erlebnisse werden veröffentlicht. Ich betreibe zusätzlich noch Foto-Sotzny.de für meine Fotografien und sotzny.net, was meine Webseite für die Softwareentwicklung ist.
Dieser Beitrag wurde unter C# abgelegt und mit , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.