2016-07-15 7 views
0

ich einen Hyperlink auf einer ASPX-Seiteein kaufmännische in einem URL-Behandlung

<asp:HyperLink ID="hlTest" runat="server" NavigateUrl="#">Test Link</asp:HyperLink> 

auf der Code-Behind-Seite habe ich habe:

string link = "http://myDoman/myEmailAttachments/1436/" + HttpUtility.HtmlEncode("Picture of Jim&John.jpg"); 
hlTest.NavigateUrl = link; 

Dies erzeugt eine URL, die wie folgt aussieht: http://myDomain/myEmailAttachments/1436/Picture%20of%20Jim&John.jpg

Dies bewirkt, dass eine Nachricht angezeigt wird: Ein potenziell gefährlicher Request.Path-Wert wurde vom Client erkannt (&).

Ich habe versucht mit Server.Urlencode. Dies erzeugt eine URL, die wie folgt aussieht ...

http://myDomain/myEmailAttachments/1436/Picture+of+Jim%26John.jpg

Dies bewirkt, dass die gleiche Meldung angezeigt werden: Es wurde von dem Client (&) nachgewiesen Ein potenziell gefährlich Request.Path Wert.

Wenn ich eine Datei mit dem Namen haben ...

Bild von Jim & John.jpg

... Wie kann ich es in einen Hyperlink zu bekommen, so dass es die Datei tatsächlich gehen und bekommen? Danke für jede Hilfe.

+2

Mögliche Duplikat [URL Routing, Image Handler & "Ein potenziell gefährlich Request.Path Wert"] (http://stackoverflow.com/questions/14475913/url-routing-image-handler-a-potentially -gefährlicher-Anfrage-Pfad-Wert) –

Antwort

3

Das ist, weil Sie nicht möchten, HTML-Codierung (HttpUtility.HtmlEncode), aber URL-Codierung (HttpUtility.UrlEncode). Dann wird das %26 als &amp; umgeschrieben, das das richtige Format für eine URL ist. Das verhindert, dass ASP.NET es als potenziell bösartig ansieht.

string link = "http://myDoman/myEmailAttachments/1436/" 
       + HttpUtility.UrlEncode("Picture of Jim&John.jpg") 
       ; 
+0

Vielen Dank für Ihre Antwort. Ich stelle fest, dass HttpUtility.UrlEncode das Ampersand in% 26 umwandelt - was zu einer Meldung "Datei nicht gefunden" führt –

+0

Das ist richtig. –

+0

Welches ist die Version des IIS-Servers, auf dem Sie Ihre Website gehostet haben? Können Sie bitte überprüfen, ob das URL Rewrite Modul in IIS installiert ist oder nicht? Das URL-Rewrite-Modul übernimmt die Konvertierung der codierten URL in den Normalzustand. Wenn es fehlt, erhalten Sie den Fehler 404 Ressource nicht gefunden. – RBT

Verwandte Themen