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

WebAPI返回TOML内容被转义包裹,HttpClient读取异常求助

问题原因与解决方法

原因分析

你遇到的问题核心在于ASP.NET Core对Ok(string)的默认处理逻辑:当返回Ok(string)时,框架会把这个字符串当作JSON的字符串值进行序列化——给字符串整体套上双引号,同时转义内部的特殊字符(比如双引号、换行符)。

Swagger/Postman显示正常是因为它们会自动解析响应的JSON格式,把序列化后的字符串值提取出来展示,相当于帮你做了解转义和去引号的操作;而HttpClient.ReadAsStringAsync()读取的是响应的原始内容,也就是完整的JSON字符串,所以会看到带引号和转义符的结果。

正确解决方案

不要用Ok(string)返回,而是直接返回纯文本格式的响应,指定正确的内容类型(TOML的标准MIME类型是application/toml,也可以用text/plain)。示例代码如下:

[HttpGet]
[Produces("application/toml")]
public IActionResult GetTomlConfig()
{
    // 你的TOML内容生成逻辑
    var tomlContent = @"[systems.""test 2""]
name = ""testname""
organisation = ""testorg""";
    
    // 用Content返回纯文本,指定内容类型
    return Content(tomlContent, "application/toml");
}

这样修改后,HttpClient.GetAsync()再调用ReadAsStringAsync()就能直接拿到原始的TOML字符串,不需要额外处理转义或引号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 22:39:52