服务器.htmlcode的asp.net等价于asp.net mvc

本文关键字:net asp mvc 等价于 htmlcode 服务器 | 更新日期: 2023-09-27 18:02:03

我有一个ASP。. NET MVC控制器,使用HttpClient类调用另一个服务。

             var url = "some url";
             var client = new HttpClient();
             var result= client.GetAsync(url);

我发送的URL包含一些特殊字符。如何在ASP中对特殊字符进行编码。。NET MVC控制器?

谢谢! !1

服务器.htmlcode的asp.net等价于asp.net mvc

试试这个:

url = HttpUtility.UrlEncode(url);

当您正在考虑将URL用作请求(带有HttpClient.getAsync)而不是作为另一个URL的参数时,您应该使用Uri.EscapeUriString

下面是三个URL方法的比较:

var url = "http://some url?data=x y+z&user=1#ok";

HttpUtility。UrlEncode

Console.WriteLine(HttpUtility.UrlEncode(url));
3

http % % 2 f % 2 fsome +网址% 3 fdata % 3 dx + y % 2 bz % 26用户% 3 d1 % 23好

显然,这是不希望的:URL被损坏与/逃脱,+进入路径,…等。该方法似乎对URL的查询部分很有用,但对整个URL不是很有用。

HttpUtility。UrlPathEncode

Console.WriteLine(HttpUtility.UrlPathEncode(url));

http://some%20url?数据y = x + z&用户= 1 #好

这看起来很有用,尽管查询部分的空间有点问题(注意这里的断开超链接,尽管浏览器可以处理它)。但更重要的是,该方法已被弃用:

不要使用;仅用于浏览器兼容性。使用UrlEncode .

Uri。EscapeUriString

Console.WriteLine(Uri.EscapeUriString(url));

http://some%20url?data=x%20y + z&用户= 1 #好

这似乎做得很好:%20是一个转义序列,所有现代浏览器都应该支持,也出现在URL的查询部分时。

从第3版开始,在Razor视图引擎中不需要编码,而且非常方便。相反,如果你想使用标签,你应该使用:

@Html.Raw(myString)

所以基本上使用Razor是默认带有编码的

您应该使用HttpUtility。UrlPathEncode

当你使用url = httutility . urlencode (url)时,它不能很好地处理空格