我在.aspx页面上有一个超链接
<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;
这会生成一个类似于以下内容的网址: http://myDomain/myEmailAttachments/1436/Picture%20of%20Jim&John.jpg
这会导致显示一条消息:从客户端(&amp;)检测到一个潜在危险的Request.Path值。
我尝试过使用Server.Urlencode。这会产生一个看起来像......的网址。
http://myDomain/myEmailAttachments/1436/Picture+of+Jim%26John.jpg
这会导致显示相同的消息:从客户端(&amp;)检测到潜在危险的Request.Path值。
如果我有一个名为...的文件
Jim&amp; John.jpg的图片
...我怎样才能将它变成一个超链接,以便它实际上去获取文件?谢谢你的帮助。
答案 0 :(得分:3)
这是因为你不想HTML编码(HttpUtility.HtmlEncode
),而是URL编码(HttpUtility.UrlEncode
)。然后,%26
将被重写为&
,这是URL的正确格式。这将阻止ASP.NET将其视为潜在的恶意攻击。
string link = "http://myDoman/myEmailAttachments/1436/"
+ HttpUtility.UrlEncode("Picture of Jim&John.jpg")
;