You need to enable JavaScript to run this app. .NET Core中HttpServerUtility.UrlTokenEncode的正确等效实现是什么
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core中HttpServerUtility.UrlTokenEncode的正确等效实现是什么

错误原因说明

你误用了API:HttpUtility.UrlEncode的作用是对URL查询参数中的特殊字符做百分号编码,和.NET Framework中HttpServerUtility.UrlTokenEncode实现的Base64URL编码逻辑完全不同,所以运行结果不一致。


正确等效实现

方案1:使用内置API直接替换(推荐)

.NET Core 2.1及以上版本可以直接使用Microsoft.AspNetCore.WebUtilities包中的WebEncoders.Base64UrlEncode方法,输出和原HttpServerUtility.UrlTokenEncode完全兼容,无需额外处理:

using Microsoft.AspNetCore.WebUtilities;
using System.Text;

private static string ToBase64Url(string value) => ToBase64Url(Encoding.UTF8.GetBytes(value));

private static string ToBase64Url(byte[] value)
{
    return WebEncoders.Base64UrlEncode(value);
}

用你提供的测试数据运行,即可直接得到预期结果eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9。

方案2:手动实现兼容逻辑

如果不想额外引用AspNetCore相关包,可手动复刻UrlTokenEncode的核心逻辑:

using System;
using System.Text;

private static string ToBase64Url(byte[] value)
{
    // 先执行标准Base64编码
    string base64Str = Convert.ToBase64String(value);
    // 替换URL不允许的特殊字符
    base64Str = base64Str.Replace('+', '-').Replace('/', '_');
    // 移除末尾填充用的等号
    return base64Str.TrimEnd('=');
}

该实现和原HttpServerUtility.UrlTokenEncode的输出完全一致。


内容的提问来源于stack exchange,提问作者user122222

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 03:51:03