ASP.NET 核中 URL 的编解码

HttpContext.Current.Server.UrlEncode

这只在.NET Framework 中有效。如何在 ASP.NET 核心中对 URI 参数进行编码或解码?

136967 次浏览
  • 对于 ASP.NET Core 2.0 + ,只需添加 System.Net名称空间-WebUtility类作为 System.Runtime.Extensions nuget 包的一部分发布,这是 ASP.NET Core 项目中默认引用的。

  • 对于以前的版本添加 Microsoft.AspNetCore.WebUtilities核心包。

然后,WebUtility课程将为您提供:

public static class WebUtility
{
public static string UrlDecode(string encodedValue);
public static string UrlEncode(string value);
}

它可在 .Net Core SDK 的2.0版本,在 System.Net.WebUtility.UrlEncode(请参阅文件)

不要浪费你的时间,我有很多经验,这些所谓的网址编码器,他们都是无用的,有不同的怪癖。例如网络实用工具。UrlEncode 不处理“ +”符号。

如果要对 URL 参数进行编码,请使用 BASE58编码。它只使用字母 + 数字,因此你不需要网址编码。

对于 ASP.Net Core 2.0 + ,如果需要将空格编码为 %20

而不是 +;

用途:

 Uri.EscapeDataString(someString);

我使用的是 再次询问,UrlEncode 对我不起作用,因为它对整个 URL 进行编码。我用 UriHelper 解决了这个问题。编码,如下所示。

UriHelper 编码

// generate url string...
return Redirect(Microsoft.AspNetCore.Http.Extensions.UriHelper.Encode(new System.Uri(url)));

只是在这个组合中加入了另一种方法:

UrlEncoder.Default.Encode(url);

Https://learn.microsoft.com/en-us/dotnet/api/system.text.encodings.web.urlencoder?view=net-6.0