无法解析 JSON 文件,Progam.cs asp.net 核心中的错误
Posted
技术标签:
【中文标题】无法解析 JSON 文件,Progam.cs asp.net 核心中的错误【英文标题】:Could not parse the JSON file ,Error in Progam.cs asp.net core 【发布时间】:2018-03-06 01:23:04 【问题描述】:我在使用 ASP.NetCORE 2.0 版本的 program.cs 文件时遇到了一些问题
这是我的代码
public class Program
public static void Main(string[] args)
BuildWebHost(args).Run();
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseKestrel()
.UseStartup<Startup>()
.UseConfiguration(new ConfigurationBuilder().AddCommandLine(args).Build())
.Build();
当我运行项目时,出现以下错误。
System.FormatException: 'Could not parse the JSON file. Error on line number '0': ''.'
如何解决?
【问题讨论】:
你要解析的 JSON 是什么? 我不知道,我只是想像这样运行项目 .NET 核心和系统抛出异常你有什么解决办法吗? 可能你在 Startup 类中添加了配置文件。看看那里。 一个空文件会出现这个问题,它必须至少包含 。 答案是您的secrets.json
文件一定是完全空的。至少应该有
中的左大括号和右大括号,否则它将引发错误,因为如果为空,它将不是有效的 json 文件。我也浪费了太多时间,但终于弄明白了,感谢上面@FrodeNilsen 评论的评论
【参考方案1】:
我在另一个帖子中遇到了与此类似的问题,并在那里发布了我的解决方案:Application Startup Failure with Json read Error。也贴在这里,以防它消失。
我遇到了同样的问题。就我而言,我已经开始实施应用程序机密,但中途放弃了它。我的 secrets.json
文件保持链接但 JSON 无效。
检查您的.csproj
以查看<UserSecretId>
属性是否设置在<PropertyGroup>
下。如果已设置,BuildWebHost()
将在'%APPDATA%\Microsoft\UserSecrets\secretId'
中查看您的secrets.json
文件,以及您的appsettings.json
文件。任何一个文件中的错误都会导致该方法失败,但它不会告诉您它是哪个文件。
我的解决方案是删除<UserSecretId>
属性或
【讨论】:
多么传奇啊!!!我迁移到 AWS Secret Manager 并清除了我的秘密文件..... 啊,谢谢。我刚刚清除了我的 secrets.json。留下一对花括号
就解决了。
太棒了。同样的事情也发生在我身上。
【参考方案2】:
您的appSettings.json
文件(或您正在使用的任何配置)的格式是否正确?如果开头有无效字符,WebHost.CreateDefaultBuilder
将无法正确解析它。当复制/粘贴在文件开头添加空格时,我看到了这个问题。
【讨论】:
我有 appsettings.Test.json 文件,但它是空的。在我将空 添加到 JSON 设置文件后,错误消失了。谢谢!【参考方案3】:appsettings.json 格式不正确时可能会发生这种情况
就我而言,我有以下配置并收到错误
"ConnectionStrings":
"TransferDBConnection":
"Server=INGBTCPIC5DT04D;Database=TransferDB;Trusted_Connection=true;
,
******
"Logging":
"LogLevel":
"Default": "Warning"
,
"AllowedHosts": "*"
理想情况下,它应该是一个额外的导致这个问题
"ConnectionStrings":
"TransferDBConnection":
"Server=INGBTCPIC5DT04D;Database=TransferDB;Trusted_Connection=true;"
,
"Logging":
"LogLevel":
"Default": "Warning"
,
"AllowedHosts": "*"
【讨论】:
【参考方案4】:同样的问题并通过从*.cproj
删除 <UserSecretsId> </UserSecretsId>
解决。
这是一个错误的用户密码配置
【讨论】:
这对我的问题很有帮助。不知何故,失败的项目的 secrets.json 文件是空白的。我的解决方案是将
添加到我的 secrets.json 文件中。要编辑文件,请在解决方案资源管理器中右键单击项目并选择管理用户机密。【参考方案5】:
我的一个复杂 API 遇到了同样的问题,遗憾的是我浪费了几个小时才找到问题。
首先检查您的appsettings.json
是否正确格式化为标准JSON。
我的问题是我在 appsettings.json 文件中错误地输入了一些字符,像这样(对我来说,'ttings' 字符会导致这个问题)
还要检查您的所有json
文件是否不为空。一个标准的json
至少应该有两个花括号。
【讨论】:
就我而言,我有空的 appsettings.production.json 文件。谢谢。【参考方案6】:我遇到了这个问题,原因是由于某种原因,Visual Studio 保存的文件带有一些在文本之前的不可见元数据,因此 JSON 阅读器无法解析它。
你需要File -> Save As -> (Choose UTF-8 Without BOM)
。
【讨论】:
这就是我的解决方案 :) 谢谢【参考方案7】:我遇到了同样的问题。
我发现这个问题似乎是由我的appsettings.json
文件引起的。
我从另一个地方复制了一个版本来解决这个问题。
【讨论】:
虽然这不是一个答案,但请使用评论部分提出其他或补充问题。谢谢。 @ShanteshwarInde 我不同意。答案解释说,从其他地方复制文件似乎可以解决问题,这是一个有效的答案。 我的 appsettings.json 也有问题。或者更具体地说,使用我的 appsettings.production.json,它覆盖了 appsettings.json,用于我的软件的生产版本。早些时候,我的 appsettings.production.json 有花括号,其中没有任何内容。我不小心删除了那些花括号,以为空文件也可以。它没有。直到部署时我才发现,因为我的 appsettings.development.json did 有正确的内容。经验教训:在覆盖的 appsettings 文件中有空括号。 谢谢杰!我在创建新环境时搞砸了,他们的 appsettings.environmentName.json 文件是空文件。为每个文件添加了花括号,它就像一个魅力。再次感谢您。【参考方案8】:在我的情况下,我遇到了这个问题,因为我在我的解决方案中添加了用户密码,后来删除了包括 在内的所有内容。请确保文件中的内容采用正确的 JSON 格式。或者,如果不需要文件中的信息,请尝试向文件提供一个空对象 。
【讨论】:
这是我的情况。【参考方案9】:在 m 的情况下,我在 appsettings.json 中添加了额外的 之前(上方) "ConnectionStrings" :
我从另一个文件中复制了这个,并假设 "ConnectionStrings" :
必须在花括号内
之前
...
,
//<-- this one the culprit
"ConnectionStrings":
"Dapper": "Server=.;Database=Dapper;Trusted_Connection=True;"
,
之后
...
,
"ConnectionStrings":
"Dapper": "Server=.;Database=Dapper;Trusted_Connection=True;"
,
【讨论】:
【参考方案10】:检查您的 json 中是否没有任何隐藏的空格或制表符。 你可以使用https://jsonlint.com/来验证你的json格式。
【讨论】:
【参考方案11】:检查您的 appsettings.json 文件。这个问题是因为您的文件没有逗号、方括号、大括号或其他标点符号。
【讨论】:
【参考方案12】:如果您的 appsetting.json 格式不正确,可能会出现此问题。
在我的情况下,我的 appsettings.json 中有一个不需要的字符
如果你在 sdk 部分仔细看,我有一个额外的 l 只是导致异常。
"AppSettings":
"DefaultConnection": "ProdConnection",
"DoGoogleAnalytics": "false"
,
"sdk": l
"version": "1.0.0"
,
"ConnectionStrings":
"LocalConnection": "data source=DATA_SERVER\\SQLEXPRESS,12345;initial catalog=DATABASE_NAME;persist security info=True;user id=db_user_id;password=db_password;MultipleActiveResultSets=true",
【讨论】:
【参考方案13】:只需将 ConnectionStrings 放在 appsetting 文件中,然后运行迁移命令。
【讨论】:
请提供高质量的答案,直到您可以编写 cmets。这还不够回答。【参考方案14】:对我来说,appsettings.json 中缺少逗号
【讨论】:
以上是关于无法解析 JSON 文件,Progam.cs asp.net 核心中的错误的主要内容,如果未能解决你的问题,请参考以下文章