You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统一Blazor WASM与.NET Core API的字符串拼接结果?

解决Blazor WASM与.NET Core API字符串拼接一致性问题

核心原因

你看到的两端差异只是控制台/调试输出的显示格式不同,并非字符串本身的内容差异:

  • 客户端的单引号是输出时的包裹符,实际字符串不含单引号;
  • 服务器端的双引号和转义符(\")是JSON序列化/输出时的自动转义,并非字符串原始内容的一部分。

验证实际内容是否一致

直接比较拼接后的字符串原始值,而非输出的格式化结果:

  • 客户端:拼接后取toHash.ToString(),调试时聚焦字符串本身的内容,不要被外层引号误导;
  • 服务器端:接收对象后完成同样的拼接操作,用string.Equals(clientStr, serverStr)直接比较,确认内容是否真的不一致。

调整序列化配置保证内容一致

如果确实因JSON序列化/反序列化导致内容被修改,调整两端的JSON配置:

服务器端(.NET Core API)

在Program.cs中配置System.Text.Json,禁用不必要的HTML和引号转义:

builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        // 禁用严格的JSON转义,保留原始HTML字符和引号
        options.JsonSerializerOptions.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping;
        // 可选:取消格式化输出,和客户端保持一致的紧凑格式
        options.JsonSerializerOptions.WriteIndented = false;
    });

客户端(Blazor WASM)

如果客户端发送请求时的序列化导致内容变化,配置HttpClient的JSON选项:

builder.Services.AddScoped(sp => new HttpClient
{
    BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)
}.ConfigureHttpClientJsonOptions(options =>
{
    options.JsonSerializerOptions.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping;
}));

额外注意

不要通过输出的引号、转义符判断字符串一致性,这些都是工具的自动格式化行为。真正的字符串内容是去掉外层引号、还原转义符后的部分,比如两端的实际有效内容都是:

CLIA<p>Descriptions</p><p>Instructions</p>CA<p><strong>CLIA&nbsp; <a href="http://www.google.com">http://www.google.com</a>&nbsp; &nbsp;</strong></p>CLIA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:44:50