Replacement for System.Web.HttpUtility.UrlEncode/UrlDecode ASP.NET 5

bezejmeny picture bezejmeny · Sep 7, 2015 · Viewed 32.6k times · Source

I would like to know if there is a replacement for System.Web.HttpUtility.UrlEncode and UrlDecode.

As I found for Encode it should be: Microsoft.Framework.WebEncoders.UrlEncoder.Default.UrlEncode.

But I did not find UrlDecode. Is there one?

Answer

Mihai Dinculescu picture Mihai Dinculescu · Sep 7, 2015

System.Runtime.Extensions defines both UrlDecode and 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[]); }
    }
}

Update

While System.Runtime.Extensions defines the extension, as you can notice from it's code the actual class you need to call is System.Net.WebUtility

Option 1: System.Net.WebUtility

Currently there are no publicly made plans to include Decode in Microsoft.Framework.WebEncoders.

Usage

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

Option 2: System.Text.Encodings.Web.UrlEncoder

This is registered in the asp.net core service container and is injectable into your controllers etc.