.NET Core 3.1 CreateHostBuilder Cannot parse JSON file

∥☆過路亽.° 提交于 2021-01-05 06:00:05

问题


I am experiencing an error when trying to run my ASP.Net Core 3.1 project. The error is at CreateHostBuilder within Program.cs

   public class Program {
        public static void Main(string[] args) {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
    }

which has not been edited from the default ASP.NET Core Web application template from Visual Studio 2019. It gives the exception

System.FormatException: 'Could not parse the JSON file.'

It does not however refer exactly to what JSON file it's failing to parse. Here is a pastebin with all 3 existing JSON files it could be parsing.

Here is the full error stack:

  HResult=0x80131537
  Message=Could not parse the JSON file.
  Source=Microsoft.Extensions.Configuration.Json
  StackTrace:
   at Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider.Load(Stream stream)
   at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load(Boolean reload)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.Extensions.Configuration.FileConfigurationProvider.HandleException(ExceptionDispatchInfo info)
   at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load(Boolean reload)
   at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load()
   at Microsoft.Extensions.Configuration.ConfigurationRoot..ctor(IList`1 providers)
   at Microsoft.Extensions.Configuration.ConfigurationBuilder.Build()
   at Microsoft.Extensions.Hosting.HostBuilder.BuildAppConfiguration()
   at Microsoft.Extensions.Hosting.HostBuilder.Build()
   at <filename>.Main(String[] args) in <filename>:line 13

  This exception was originally thrown at this call stack:
    System.Text.Json.ThrowHelper.ThrowJsonReaderException(ref System.Text.Json.Utf8JsonReader, System.Text.Json.ExceptionResource, byte, System.ReadOnlySpan<byte>)
    System.Text.Json.Utf8JsonReader.ReadSingleSegment()
    System.Text.Json.Utf8JsonReader.Read()
    System.Text.Json.JsonDocument.Parse(System.ReadOnlySpan<byte>, System.Text.Json.Utf8JsonReader, ref System.Text.Json.JsonDocument.MetadataDb, ref System.Text.Json.JsonDocument.StackRowStack)
    System.Text.Json.JsonDocument.Parse(System.ReadOnlyMemory<byte>, System.Text.Json.JsonReaderOptions, byte[])
    System.Text.Json.JsonDocument.Parse(System.ReadOnlyMemory<char>, System.Text.Json.JsonDocumentOptions)
    System.Text.Json.JsonDocument.Parse(string, System.Text.Json.JsonDocumentOptions)
    Microsoft.Extensions.Configuration.Json.JsonConfigurationFileParser.ParseStream(System.IO.Stream)
    Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider.Load(System.IO.Stream)

Inner Exception 1:
JsonReaderException: '{' is an invalid start of a property name. Expected a '"'. LineNumber: 2 | BytePositionInLine: 4

It began when I started to use VS Code instead of Visual Studio which I normally use. The project however can run successfully on another Windows machine that's only ever run Visual Studio. I've tried a few things and I'm out of ideas. Here are the steps I have tried:

  1. Confirmed with 2 other colleagues that appsettings.json, appsettings.Development.json and launchSettings.json do not have syntax errors as resolved in this thread
  2. Confirmed they are all encoded with UTF-8 without BOM as suggested in this thread
  3. Closing Visual Studio 2019, deleting the .vs folder, opening and then running again
  4. Closing Visual Studio Code, deleting the .vscode folder, opening and then running again
  5. Switched branches and previous commits.
  6. Confirmed there is no user secrets configuration within .csproj
  7. Deleting the repo files locally and cloning it again
  8. Restarting the PC entirely
  9. Creating a new templated ASP.NET Core Web Application within Visual Studio. It ran successfully.
  10. Confirmed that args value is a string array of size [1]. The [0] position is used and contains the string %LAUNCHER_ARGS%. The environment variable does not appear in app.config or within Windows. I confirmed args is still the same and functions with the test pure template project.

回答1:


I had a similar issue with the same exception i.e. JsonReaderException: '}' is invalid after a single JSON value. Expected end of data. LineNumber: 13 | BytePositionInLine: 0.

When I examined appsettings.json file, I noticed a squiggly on the "}". This is where the problem was. Turned out that I had an extra "}" in my appsettings.json file. Some might have a missing curly brace. Rest assured, the problem lies here.




回答2:


I had the same problem in starting a webApi on the same version of Asp.net Core. The problem was missing a curlybrace in appsettings.json




回答3:


I had an issue with a value in my appsettings.json that contained a path where the backslashes in the path were interpreted as escape characters.

Changing c:\local-export-folder to c:\\local-export-folder (double backslash to escape the backslash) did the trick for me.

I saw that you also have backslashes in your file. Maybe try to escape them.




回答4:


Yes it is working once appsettings.json file properly updated as:

{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*"
}


来源:https://stackoverflow.com/questions/60167040/net-core-3-1-createhostbuilder-cannot-parse-json-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!