【问题标题】:Could not parse the JSON file ,Error in Progam.cs asp.net core无法解析 JSON 文件,Progam.cs asp.net 核心中的错误
【发布时间】: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 评论的评论

标签: c# asp.net json asp.net-core exception


【解决方案1】:

我在另一个帖子中遇到了与此类似的问题,并在那里发布了我的解决方案:Application Startup Failure with Json read Error。也贴在这里,以防它消失。


我遇到了同样的问题。就我而言,我已经开始实施应用程序机密,但中途放弃了它。我的 secrets.json 文件保持链接但 JSON 无效。

检查您的.csproj 以查看&lt;UserSecretId&gt; 属性是否设置在&lt;PropertyGroup&gt; 下。如果已设置,BuildWebHost() 将在'%APPDATA%\Microsoft\UserSecrets\{secretId}' 中查看您的secrets.json 文件,以及您的appsettings.json 文件。任何一个文件中的错误都会导致该方法失败,但它不会告诉您它是哪个文件。

我的解决方案是删除&lt;UserSecretId&gt; 属性或

【讨论】:

  • 多么传奇啊!!!我迁移到 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删除 &lt;UserSecretsId&gt; &lt;/UserSecretsId&gt; 解决。

    这是一个错误的用户密码配置

    【讨论】:

    • 这对我的问题很有帮助。不知何故,失败的项目的 secrets.json 文件是空白的。我的解决方案是将{} 添加到我的 secrets.json 文件中。要编辑文件,请在解决方案资源管理器中右键单击项目并选择管理用户机密。
    【解决方案5】:

    我的一个复杂 API 遇到了同样的问题,遗憾的是我浪费了几个小时才找到问题。

    首先检查您的appsettings.json 是否正确格式化为标准JSON。

    我的问题是我在 appsettings.json 文件中错误地输入了一些字符,像这样(对我来说,'ttings' 字符会导致这个问题)

    还要检查您的所有json 文件是否不为空。一个标准的json 至少应该有两个花括号。

    【讨论】:

    • 就我而言,我有空的 appsettings.production.json 文件。谢谢。
    【解决方案6】:

    我遇到了这个问题,原因是由于某种原因,Visual Studio 保存的文件带有一些在文本之前的不可见元数据,因此 JSON 阅读器无法解析它。

    你需要File -&gt; Save As -&gt; (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 中缺少逗号

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-05-10
              • 2021-08-08
              相关资源
              最近更新 更多