替代System.Web.HttpUtility.UrlEncode / UrlDecode ASP.NET 5


71

我想知道是否有进行更换System.Web.HttpUtility.UrlEncodeUrlDecode

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

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

Answers:


123

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

目前,还没有公开作出的计划,包括DecodeMicrosoft.Framework.WebEncoders

用法

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

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

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


非常感谢您的回答。我还有其他问题要解决,所以我昨天才去测试。
bezejmeny

2
非常感谢您的回答。它正在工作,但是我有一点问题。我正在尝试对一个值进行编码,并将结果与​​.NET 4.5中的先前应用程序进行比较。结果有些不同。在旧的asp.net中,我得到的编码值结果是:kA5viZqq23%2f4LCe4IboZ7Q%3d%3d,而使用新的UrlEncode时,重用的代码是:kA5viZqq23%2F4LCe4IboZ7Q%3D%3D。区别在于,几个字母大写。因此,某些值(例如%3D)在我的旧版本中是等号,而在新版本中,其值只能原样写入,因此%3D会被写入。您对此有任何想法吗?
bezejmeny

那很有意思。我鼓励您在GitHub中创建问题。
Mihai Dinculescu 2015年

6
因此,例如,调用为System.Net.WebUtility.HtmlDecode(stringToDecode)。我添加此评论是因为我首先混淆了添加System.Runtime.Extensions的情况,但事实并非如此,也许它可以对其他人有所帮助。
胡安
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.