2016-07-15 3 views
0

У меня есть гиперссылка на .aspx страницеОбращение амперсанд в URL

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

На коде позади страницы у меня есть:

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

Это создает URL, который выглядит как: http://myDomain/myEmailAttachments/1436/Picture%20of%20Jim&John.jpg

Это приводит к отображению сообщения: Потенциально опасное значение Request.Path было обнаружено у клиента (&).

Я попытался использовать Server.Urlencode. Это создает URL, который выглядит как ...

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

Это приводит к тому же сообщение, которое будет показано: потенциально опасное значение Request.Path было обнаружено от клиента (&).

Если у меня есть файл с именем ...

Изображение Jim & John.jpg

... Как я могу получить его в гиперссылку, так что будет на самом деле пойти и получить файл? Спасибо за любую помощь.

+2

Возможный дубликат [URL маршрутизации, Handler Image и "потенциально опасное значение Request.Path"] (http://stackoverflow.com/questions/14475913/url-routing-image-handler-a-potentially -dangerous-request-path-value) –

ответ

3

Это потому, что вы не хотите кодировать HTML (HttpUtility.HtmlEncode), но кодируете URL (HttpUtility.UrlEncode). Затем %26 будет переписан как &amp;, который является правильным форматом для URL-адреса. Это предотвратит появление ASP.NET как потенциально злонамеренного.

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

Благодарим вас за ответ. Я нахожу, что HttpUtility.UrlEncode превращает амперсанд в% 26 - что приводит к сообщению «файл не найден» –

+0

Это правильно. –

+0

, который является версией сервера IIS, на которой размещен ваш сайт? Можете ли вы проверить, установлен ли модуль перезаписи URL-адресов в IIS или нет? Модуль перезаписи URL-адресов выполняет преобразование закодированного URL-адреса в нормальное состояние. Если он отсутствует, вы получите 404 ресурса, не найденную ошибку. – RBT

Смежные вопросы