System.Web.HttpUtility.UrlEncode/UrlDecode ASP.NET 5 的替换

Posted

技术标签:

【中文标题】System.Web.HttpUtility.UrlEncode/UrlDecode ASP.NET 5 的替换【英文标题】:Replacement for System.Web.HttpUtility.UrlEncode/UrlDecode ASP.NET 5 【发布时间】:2015-09-07 08:40:01 【问题描述】:

我想知道System.Web.HttpUtility.UrlEncodeUrlDecode 是否有替代品。

我发现 Encode 应该是:Microsoft.Framework.WebEncoders.UrlEncoder.Default.UrlEncode

但是我没有找到UrlDecode。有吗?

【问题讨论】:

这能回答你的问题吗? WebUtility.htmlDecode replacement in .NET Core 【参考方案1】:

System.Runtime.Extensions 定义了UrlDecodeHtmlDecode

namespace System.Net

    public static partial class WebUtility
    
        public static string HtmlDecode(string value)  return default(string); 
        public static string HtmlEncode(string value)  return default(string); 
        public static string UrlDecode(string encodedValue)  return default(string); 
        public static byte[] UrlDecodeToBytes(byte[] encodedValue, int offset, int count)  return default(byte[]); 
        public static string UrlEncode(string value)  return default(string); 
        public static byte[] UrlEncodeToBytes(byte[] value, int offset, int count)  return default(byte[]); 
    

更新

虽然System.Runtime.Extensions 定义了扩展,但您可以从它的代码中注意到,您需要调用的实际类是System.Net.WebUtility

选项 1System.Net.WebUtility

Documentation Source Code

目前没有公开计划将Decode 包含在Microsoft.Framework.WebEncoders 中。

用法

System.Net.WebUtility.UrlEncode(myString)
System.Net.WebUtility.UrlDecode(myString)

选项 2System.Text.Encodings.Web.UrlEncoder

Source Code

这是在 asp.net 核心服务容器中注册的,可以注入到您的控制器等中。

【讨论】:

非常感谢您的回答。我还有其他问题要解决,所以我昨天才开始测试。 非常感谢您的回答。它正在工作,但我有一个小问题。我正在尝试对一个值进行编码,并将结果与​​我之前在 .NET 4.5 中的应用程序进行比较。结果有点不同。在旧的 asp.net 中,我的编码值结果是:kA5viZqq23%2f4LCe4IboZ7Q%3d%3d 使用新的 UrlEncode,结果是:kA5viZqq23%2F4LCe4IboZ7Q%3D%3D 不同之处在于很少有字母是大写的。因此,像 %3D 这样的一些值在我的旧版本中是一个等号,而在新版本中,它只是按原样写入,所以写入 %3D。你对此有什么想法吗? 这很有趣。我鼓励你在 GitHub 中创建一个问题。 所以调用是 System.Net.WebUtility.HtmlDecode(stringToDecode) 例如。我添加此评论是因为我首先混淆添加 System.Runtime.Extensions 事实并非如此,也许它可以对其他人有所帮助。

以上是关于System.Web.HttpUtility.UrlEncode/UrlDecode ASP.NET 5 的替换的主要内容,如果未能解决你的问题,请参考以下文章