c# – 如何使用Asp.net对URL进行编码?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何使用Asp.net对URL进行编码?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3656字,纯文字阅读大概需要6分钟。
内容图文
![c# – 如何使用Asp.net对URL进行编码?](/upload/InfoBanner/zyjiaocheng/768/e464f6b4d5914ccbac170e80430e1a3c.jpg)
我有以下我想要编码的aspx链接:
Response.Redirect("countriesAttractions.aspx?=");
我尝试了以下方法:
Response.Redirect(Encoder.UrlPathEncode("countriesAttractions.aspx?="));
这是我尝试的另一种方法:
var encoded = Uri.EscapeUriString("countriesAttractions.aspx?=");
Response.Redirect(encoded);
两者都重定向到页面而没有编码URL:
http://localhost:52595/countriesAttractions?=
我尝试了第三种方法:
Response.Redirect(Server.UrlEncode("countriesAttractions.aspx?="));
这次url本身被编码:
http://localhost:52595/countriesAttractions.aspx%3F%3D
但是我从UI中得到一个错误:
HTTP Error 404.0 Not Found
The resource you are looking for has been removed, had its name changed, or
is temporarily unavailable.
Most likely causes:
-The directory or file specified does not exist on the Web server.
-The URL contains a typographical error.
-A custom filter or module, such as URLScan, restricts access to the file.
另外,我想编码另一种涉及解析会话字符串的URL:
Response.Redirect("specificServices.aspx?service=" +
Session["service"].ToString().Trim() + "&price=" +
Session["price"].ToString().Trim()));
我尝试将编码方法包含在上面的代码中的方法:
Response.Redirect(Server.UrlEncode("specificServices.aspx?service=" +
Session["service"].ToString().Trim() + "&price=" +
Session["price"].ToString().Trim()));
我使用的上述编码方法显示了与之前的服务器URL编码方法相同的结果.我不确定如何在不出错的情况下以正确的方式编码url.
以及使用CommandArgument编码URL:
Response.Redirect("specificAttractions.aspx?attraction=" +
e.CommandArgument);
我尝试了以下编码:
Response.Redirect("specificAttractions.aspx?attraction=" +
HttpUtility.HtmlEncode(Convert.ToString(e.CommandArgument)));
但它没有用.
有没有办法我可以编码网址而不会收到这种错误?
我希望输出像我的第二个结果,但我想看到页面本身而不是错误页面.
我尝试过在stackoverflow上找到的其他方法,例如自编码方法,但那些方法也不起作用.
我在这种情况下使用AntiXSS类库用于我尝试的方法,因此如果我可以使用AntiXSS库获得解决方案将会很棒.
我需要将URL编码为我学校项目的一部分,所以如果我能得到解决方案那就太棒了.谢谢.
解决方法:
您可以使用HttpUtility类中的UrlEncode或UrlPathEncode方法来实现您的需求.请参阅https://msdn.microsoft.com/en-us/library/system.web.httputility.urlencode(v=vs.110).aspx的文档
但是,重要的是要理解,您不需要对整个URL字符串进行编码.它只是参数值 – 可能包含您需要编码的任意数据和在URL中无效的字符.
要解释此概念,请在简单的.NET控制台应用程序中运行以下命令:
string url = "https://www.google.co.uk/search?q=";
//string url = "http://localhost:52595/specificAttractions.aspx?country=";
string parm = "Bora Bora, French Polynesia";
Console.WriteLine(url + parm);
Console.WriteLine(url + HttpUtility.UrlEncode(parm), System.Text.Encoding.UTF8);
Console.WriteLine(url + HttpUtility.UrlPathEncode(parm), System.Text.Encoding.UTF8);
Console.WriteLine(HttpUtility.UrlEncode(url + parm), System.Text.Encoding.UTF8);
您将获得以下输出:
https://www.google.co.uk/search?q=Bora Bora, French Polynesia
https://www.google.co.uk/search?q=Bora+Bora%2c+French+Polynesia
https://www.google.co.uk/search?q=Bora%20Bora,%20French%20Polynesia
https%3a%2f%2fwww.google.co.uk%2fsearch%3fq%3dBora+Bora%2c+French+Polynesia
通过将这些内容粘贴到浏览器中并尝试使用它们,您很快就会看到什么是有效的URL,什么不是.
(注意当粘贴到现代浏览器中时,如果你的参数无效,它们中的许多会自动进行URL编码 – 所以你会发现第一个输出也有效,但是如果你试图通过一些C#代码调用它,它会失败.)
工作演示:https://dotnetfiddle.net/gqFsdK
您当然可以将输入的值更改为您喜欢的任何值.它们可以是硬编码的字符串,也可以是返回字符串的其他代码的结果(例如,从会话中提取,或者从数据库,UI元素或其他任何地方获取).
注:澄清有效URL只是URL格式正确的字符串也很有用.它与实际存在的URL不同. URL可能有效但如果您尝试使用它则不存在,或者可能有效并且确实存在.
内容总结
以上是互联网集市为您收集整理的c# – 如何使用Asp.net对URL进行编码?全部内容,希望文章能够帮你解决c# – 如何使用Asp.net对URL进行编码?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。