【问题标题】:URL Encode and Decode in ASP.NET CoreASP.NET Core 中的 URL 编码和解码
【发布时间】:2017-07-05 08:30:12
【问题描述】:
HttpContext.Current.Server.UrlEncode

这仅在 .NET Framework 中有效。如何在 ASP.NET Core 中编码或解码 URI 参数?

【问题讨论】:

  • ASP.NET Core 或任何非 Web 项目中没有 HttpContext。通过 Uri 类的方法可以使用相同的方法,例如Uri.EscapeDataStringUri.EscapeUriString
  • @PanagiotisKanavos 错误 - 没有 HttpContext.CurrentHttpContext 是 .Net Core 的一部分 - Microsoft.AspNetCore.Http.HttpContext。记住这一点
  • 记得阅读整个评论。你提到的HttpContext与之前版本的HttpContextVERY不同。使用 Uri 方法更常见

标签: c# asp.net-core urlencode


【解决方案1】:
  • 对于 ASP.NET Core 2.0+,只需添加 System.Net 命名空间 - WebUtility 类作为 System.Runtime.Extensions nuget 包的一部分提供,默认情况下在 ASP.NET Core 项目中引用。

  • 对于以前的版本添加Microsoft.AspNetCore.WebUtilitiesnuget包。

那么WebUtility 课程将为您提供:

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

【讨论】:

  • 在 SDK 2.0.0+ 上对我不起作用,但 Manuel Alves 回答 (System.Net.WebUility) 可以。
  • 用法是:var decodedUrl = WebUtility.UrlDecode(encodedUrl);
【解决方案2】:

version 2.0.0 of the .Net Core SDKSystem.Net.WebUtility.UrlEncode (see documentation) 上可用

【讨论】:

  • 对于 Net Core 2+,当我使用 System.Net.WebUtility.UrlEncode 时:空格用 + 编码。我使用Uri.EscapeDataString%20 进行编码。
【解决方案3】:

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

相对于+;

用途:

 Uri.EscapeDataString(someString);

【讨论】:

    【解决方案4】:

    我正在使用 redirect,但 UrlEncode 对我不起作用,因为它对整个 url 进行了编码。我通过使用 UriHelper.Encode 解决了这个问题,如下所示。

    UriHelper.Encode

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

    【讨论】:

      【解决方案5】:

      不要浪费你的时间,我对这些所谓的 url 编码器有很多经验,它们都是无用的,并且有不同的怪癖。例如 WebUtility.UrlEncode 不处理“+”号。

      如果您想对 URL 参数进行编码,请使用 BASE58 编码。它仅使用字母 + 数字,因此您不需要 url 编码。

      【讨论】:

      • 你能解释一下所有这些怪癖吗,我只熟悉 QueryHelpers.AddQueryString 或 Uri.EscapeDataString 不行。
      • 我刚刚试用了WebUtility.UrlEncode,它奇妙地将加号 ("+") 转换为 "%2B"。我正在使用 .NET Core 3.1。
      • @Michael Uri.EscapeDataString 使用 .NET 6 将“+”转换为 %2B
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      • 2011-12-22
      • 2017-09-29
      • 1970-01-01
      • 2022-12-11
      相关资源
      最近更新 更多