.NET Core控制台应用读取appsettings.json网络路径遇JSON解析错误
解决.NET Core中appsettings.json网络路径JSON解析失败的问题
首先得明确:JSON里的反斜杠必须用双反斜杠\\来转义,你原来的配置写法里转义符和引号的组合出了问题,导致JSON解析器无法正确识别这个字符串。
错误原因分析
你写的配置:
"ExportLocation": "\"\\\Eservername.domain.com\\filefolder\\subfolder\\\" "
这里有几个明显问题:
- 开头和结尾的
\"是多余的,这会让JSON把它们当成字符串的一部分,同时中间的\\\其实是一个转义后的反斜杠加上一个未转义的反斜杠,JSON解析器遇到未转义的反斜杠直接就会报错。 - UNC路径的正确格式是
\\servername\folder\subfolder,在JSON里需要把每个反斜杠都转义成\\才能被正确识别。
正确的配置写法
你可以选择以下两种简单靠谱的配置方式:
方式1:严格按JSON转义规则写UNC路径
把每个反斜杠都换成双反斜杠,不需要额外加引号:
"ExportLocation": "\\\\Eservername.domain.com\\filefolder\\subfolder"
解释:这里的\\\\会被JSON解析成实际的\\(对应UNC路径的开头),后面的\\会被解析成单个\,最终得到的路径就是\\Eservername.domain.com\filefolder\subfolder,完全符合网络共享路径的要求。
方式2:使用正斜杠代替反斜杠(更简洁)
.NET框架本身支持正斜杠作为路径分隔符,所以你可以直接写:
"ExportLocation": "//Eservername.domain.com/filefolder/subfolder"
这种写法不需要处理复杂的反斜杠转义,JSON解析器能直接识别,而且.NET在处理路径时会自动转换成系统对应的分隔符,完全不影响后续访问网络服务器的文件。
在代码中读取配置的示例
确保你已经正确配置了IConfiguration,然后可以这样读取:
using Microsoft.Extensions.Configuration; using System; class Program { static void Main(string[] args) { var config = new ConfigurationBuilder() .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .Build(); string exportLocation = config["ExportLocation"]; Console.WriteLine($"读取到的路径:{exportLocation}"); // 接下来就可以用这个路径访问网络服务器的待处理文件了 } }
验证小技巧
如果你不确定JSON字符串是否正确,可以直接在VS Code里打开appsettings.json,它会实时提示语法错误;或者写完后运行代码打印出读取到的路径,确认是否和预期一致。
内容的提问来源于stack exchange,提问作者Caverman
相关产品推荐
相关产品推荐

