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

使用字符串插值拼接URL报错404,改用string.Format可正常运行是什么原因?

问题根因

你遇到的问题是代码字符串中混入了不可见的零宽度空格字符(Unicode 编码 U+200B):

  • 你写字符串插值代码时,/freightcategories/ 和 {categoryCode} 之间存在一个零宽度空格,字符串插值运算会保留这个不可见字符到最终生成的URL中。一方面该字符会导致生成的URL路径和服务端实际接口路径不匹配,触发404错误;另一方面该字符没有显示宽度,你在调试工具里查看URL时会看起来像是末尾的categoryCode值没渲染、显示为空白。
  • 你修改为string.Format写法时,重新手动输入了路径部分,意外删除了对应位置的零宽度空格,所以生成的URL完全符合预期,请求可以正常执行。
验证方案

你可以通过以下方式确认隐藏字符的存在:

  1. 将原来的插值代码字符串复制到支持显示所有Unicode字符的编辑器(如VS Code、开启了「显示所有字符」功能的Notepad++)中,即可看到零宽度空格的特殊标记。
  2. 运行以下代码对比字符串长度即可验证:
var interpolatedUrl = $"{_baseAddress}/api​/freightcategories/​{categoryCode}";
var expectedLength = _baseAddress.Length + "/api/freightcategories/".Length + categoryCode.Length;
// 输出的实际长度会大于预期长度,差值就是隐藏的零宽度空格数量
Console.WriteLine($"实际URL长度:{interpolatedUrl.Length},预期长度:{expectedLength}");
解决方案

直接手动重新输入完整的URL路径字符串,不要从网页、PDF等文档中直接复制粘贴路径内容,即可避免这类不可见控制字符混入代码的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:45:00