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.UrlEncode
和UrlDecode
是否有替代品。
我发现 Encode
应该是:Microsoft.Framework.WebEncoders.UrlEncoder.Default.UrlEncode
。
但是我没有找到UrlDecode
。有吗?
【问题讨论】:
这能回答你的问题吗? WebUtility.htmlDecode replacement in .NET Core 【参考方案1】:System.Runtime.Extensions 定义了UrlDecode
和HtmlDecode
。
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
选项 1:System.Net.WebUtility
Documentation Source Code目前没有公开计划将Decode
包含在Microsoft.Framework.WebEncoders
中。
用法
System.Net.WebUtility.UrlEncode(myString)
System.Net.WebUtility.UrlDecode(myString)
选项 2:System.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 的替换的主要内容,如果未能解决你的问题,请参考以下文章