无法解析Jog文件,Progam.cs asp.net核心中的错误

时间:2017-09-25 06:40:09

标签: c# asp.net json

我在ASP.CORE 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': ''.'

如何解决?

12 个答案:

答案 0 :(得分:9)

我在另一个线程中遇到了类似的问题,并将解决方案发布到了那里:Application Startup Failure with Json read Error。如果它消失了,也要张贴在这里。


我遇到了同样的问题。就我而言,我将开始实施应用程序的机密,但半途而废。我的secrets.json文件被保留链接,但使用无效的JSON。

检查您的.csproj,看看是否在<UserSecretId>下设置了<PropertyGroup>属性。如果已设置,除了BuildWebHost()文件之外,secrets.json还将浏览'%APPDATA%\Microsoft\UserSecrets\{secretId}'中的appsettings.json文件。这两个文件中的错误都会导致该方法失败,但不会告诉您该文件是哪个文件。

我的解决方案是删除<UserSecretId>属性或

答案 1 :(得分:9)

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": "*"
}

答案 2 :(得分:3)

您的appSettings.json文件(或您正在使用的任何配置)格式正确吗?如果开头有无效字符,WebHost.CreateDefaultBuilder将无法正确解析它。当复制/粘贴在文件开头添加空格时,我看到了这个问题。

答案 3 :(得分:3)

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

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

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

the PR

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

答案 4 :(得分:2)

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

您需要File -> Save As -> (Choose UTF-8 Without BOM)

答案 5 :(得分:1)

相同的问题,可以通过ActionMailer::Base.delivery_method = :smtp ActionMailer::Base.smtp_settings = { address: 'smtp.sendgrid.net', port: '587', authentication: :plain, user_name: ENV['SENDGRID_USERNAME'], password: ENV['SENDGRID_PASSWORD'], domain: 'my-app.herokuapp.com', enable_starttls_auto: true } 中删除 <UserSecretsId> </UserSecretsId>来解决。

这是错误的用户密码配置

答案 6 :(得分:1)

在这种情况下,我在appsettings.json中(在上方) "ConnectionStrings" :之前放置了另外的 {

我从另一个文件复制了此文件,并假设"ConnectionStrings" :必须放在大括号{}中

之前

...
},
{  //<-- this one the culprit
    "ConnectionStrings": {
      "Dapper": "Server=.;Database=Dapper;Trusted_Connection=True;"
    },

之后

...
},
    "ConnectionStrings": {
      "Dapper": "Server=.;Database=Dapper;Trusted_Connection=True;"
    },

答案 7 :(得分:1)

就我而言,我在解决方案中添加了用户机密,后来删除了包括{}在内的所有内容,因此遇到了这个问题。请确保文件中的内容使用正确的JSON格式。或者,如果文件中不需要任何信息,请尝试提供空对象{}。

答案 8 :(得分:0)

检查您的json中是否有任何隐藏空格或标签。 您可以使用https://jsonlint.com/来验证您的json格式。

答案 9 :(得分:0)

我遇到了同样的问题。
我发现此问题似乎是由我的appsettings.json文件引起的。
我从另一个地方复制了一个版本来解决此问题。

答案 10 :(得分:0)

检查您的 appsettings.json 文件。这个问题是因为您的文件没有逗号、方括号、大括号或其他标点符号。

答案 11 :(得分:-1)

只需将ConnectionStrings放在appsetting文件中,然后运行迁移命令即可。