| 

.NET C# Java Javascript Exception

2
Hallo,

Zur Zeit habe ich folgendes Problem, und ich weiss nicht mehr was ich sonst noch versuchen soll.
In unserer Firma haben wir einen Server (Linux), mit welchem wir unsere Installationspaket signieren. Dafür gibt es eine Webseite wo ich das File raufladen kann, ein paar Sekunden warte und dann bekomme ich einen Download Link.

Da ich mein Installationspaket über einen CI Server erstelle, möchte ich dies automatisiert machen und nicht von Hand. Der Upload des Files habe ich mit dem HttpWebRequest hinbekommen und dies funktioniert auch. Nun ist mein Problem der Download des Files. Und zwar hat die URL ein Fragezeichen drin und wenn ich dies über HttpWebRequest mache, wird bei der Authorisierung nach dem Fragezeichen den Rest der URI abgeschnitten. Und dies gibt ein 400 Bad Requst zurück.

Bei der Analyse mit Fiddler habe ich festgestellt, dass bei der Authorisierung der ganze Url Pfad benötigt. Das sieht in etwa so aus.

Web Seite:
No Proxy-Authorization Header is present.
Authorization Header is present: Digest username="username", realm="Enter signer's password here.", nonce="52c2183…",
uri="/sign/sign?download=/var/www/cgi-bin/sign/signed_20140725_367c75e1ee106400704f3afd22c36c69_Setup2007_14.07.22.1442.msi",
cnonce="YWUwZmJiZj…", nc=00000001, qop=auth, response="", algorithm="MD5"


Web Request:
No Proxy-Authorization Header is present.
Authorization Header is present: Digest username="username",realm="Enter signer's password here.",nonce="uW..",
uri="/sign/sign"
,algorithm="MD5",cnonce="5d…",nc=00000001,qop="auth",response="81d6e"

Der Code sieht so aus
string md5Hash = GenerateMD5();
string fileName = ExtractFileName();
string downloadUrl = this.url + "?download=/var/www/cgi-bin/sign/signed_" + DateTime.Now.Date.ToString("yyyyMMdd") + "_" + md5Hash + "_" + fileName;
byte[] result;
byte[] buffer = new byte[4096];
HttpWebRequest webRequest = HttpWebRequest.CreateHttp(downloadUrl) as HttpWebRequest;
webRequest.KeepAlive = true;
webRequest.PreAuthenticate = true;
webRequest.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequested;
webRequest.Credentials = userCredentials;
webRequest.Accept = "*/*";
webRequest.Method = "GET";
using (WebResponse response = webRequest.GetResponse())
{
}


Habe das Fragezeichen schon mit einem %3f ersetzt, aber dies hat auch nicht funktioniert.
Mein Problem ist, ich weiss nicht wie ich im Authorization Header die ganze Url mitgeben kann. Hat jemand von euch eine Idee, wie ich dieses Problem lösen kann.

Besten Dank,
Dan
25.07.2014
CodingMan 168 5
1 Antwort
0
Was genau steht in "this.url"? Fängt die URL mit einem Schema an, oder ist es nur ein Pfad? Falls letzteres: versuch mal, eine komplette URL samt Schema anzugeben.
25.07.2014
Matthias Hlawatsch 13,2k 4 9
In this.url steht "http://server.myserver.com/sign/sign"
Sorry hatte diese Variable vergessen.
CodingMan 25.07.2014

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH