部署到IIS后appsettings.json中ConnectionString出现解析错误
解决ASP.NET Core部署IIS时appsettings.json的JSON解析错误
我正在开发一个ASP.NET Core MVC项目,在appsettings.json文件中配置了如下连接字符串:
{ "Logging": { "LogLevel": { "Default": "Warning" } }, "AllowedHosts": "*", "ConnectionStrings": { "LabConnectionString": "Server=1234-98761\SQLEXPRESS;Database=db;Trusted_Connection=True;MultipleActiveResultSets=true;", "providerName": "System.Data.SqlClient" } }
项目在Visual Studio中运行正常,但编译后部署到IIS服务器时,日志中出现如下错误:
未处理的异常: System.FormatException: 无法解析JSON文件。第9行错误: "ConnectionStrings": {
"LabConnectionString": "data source=1234-98761;initial catalog=db;Trusted_Connection=True;MultipleActiveResultSets=true;",'.Newtonsoft.Json.JsonReaderException: 无效的JSON转义序列: \S。路径'ConnectionStrings.LabConnectionString',第9行,位置52。
问题原因
JSON语法中,单个反斜杠\是转义字符的起始标记,不能直接作为普通字符使用。原连接字符串里的\SQLEXPRESS被JSON解析器识别为试图转义字符S,但\S不是合法的JSON转义序列,导致解析失败。
解决方案
将连接字符串中的单个反斜杠替换为双反斜杠\\,让JSON解析器将其识别为普通的反斜杠字符。修改后的完整配置如下:
{ "Logging": { "LogLevel": { "Default": "Warning" } }, "AllowedHosts": "*", "ConnectionStrings": { "LabConnectionString": "Server=1234-98761\\SQLEXPRESS;Database=db;Trusted_Connection=True;MultipleActiveResultSets=true;", "providerName": "System.Data.SqlClient" } }
补充说明
Visual Studio开发环境中能正常运行,是因为开发模式下的配置加载逻辑对单反斜杠有兼容处理,但IIS部署时是直接读取并严格解析JSON文件,必须遵循标准JSON语法。
内容的提问来源于stack exchange,提问作者Partha
相关产品推荐
相关产品推荐

