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

迁移API URL至web.config后出现JSON语法错误,ASP.NET求助

问题:从web.config读取API配置后出现JSON语法错误

此前,本功能的API URL在代码中硬编码,写法如下:

private const string APIUrl = "api/news/newsfilter";

我将其移至同目录下的web.config文件中,配置如下:

<appSettings>
  <add key="webpages:Enabled" value="false" />
  <add key="NewsFilterApiUrl" value="api/news/newsfilter"/>
</appSettings>

现在通过以下方式引用该配置:

private static string APIUrl = ConfigurationManager.AppSettings["NewsFilterApiUrl"];

但在尝试过滤新闻时,出现了JSON语法错误。刚接触ASP.NET应用及架构,请问是否遗漏了某个步骤?


排查步骤
  • 确认配置是否读取成功
    ConfigurationManager.AppSettings["NewsFilterApiUrl"]可能返回null——如果web.config配置位置错误、键名拼写失误,都会导致这个问题。空URL会让后续请求逻辑出错,甚至请求到错误地址,服务器返回非JSON内容(比如404页面的HTML),解析时就会报JSON语法错误。可以临时加调试输出,查看APIUrl的值是否为预期的"api/news/newsfilter"。

  • 检查web.config的结构合法性
    确保<appSettings>节点放在<configuration>根节点内部,不能嵌套在其他节点里,否则配置无法被正确加载。正确的web.config结构示例:

    <configuration>
      <appSettings>
        <add key="webpages:Enabled" value="false" />
        <add key="NewsFilterApiUrl" value="api/news/newsfilter"/>
      </appSettings>
      <!-- 其他配置节点,比如system.web、connectionStrings等 -->
    </configuration>
    
  • 核对请求URL的拼接逻辑
    硬编码时的URL和读取配置后的URL要完全一致,检查是否在拼接BaseURL时出现重复路径(比如BaseURL已带"/api",配置里又写了"api/news/newsfilter",最终变成"http://xxx/api/api/news/newsfilter")。错误URL会导致服务器返回错误响应,进而触发JSON解析失败。

  • 确认程序集引用(仅ASP.NET Framework)
    如果是ASP.NET Framework项目,要确保项目引用了System.Configuration程序集,否则ConfigurationManager无法正常读取web.config配置。右键项目→添加引用→找到System.Configuration勾选即可。

  • 查看实际请求响应
    用浏览器开发者工具(F12)或抓包工具查看实际发送的请求地址和服务器返回内容,如果返回的是HTML错误页面(比如404、500),那必然会报JSON语法错误,此时需优先解决URL错误问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:02:28