Asp.Net Core 2.0 ArgumentNullException:值不能为null。参数名称:connectionString

时间:2018-01-21 04:16:05

标签: c# asp.net-core-2.0

我在我的电脑上使用ASP.NET Core 2.0,Visual Studio 2017 Enterprise,版本15.5.4和本地数据库。

我第一次使用数据库工作,我遇到了以下问题:

  

处理请求时发生未处理的异常   ArgumentNullException:值不能为null   参数名称:connectionString。

在阅读并尝试了所有可能的建议以及可能的解决方案后,问题仍然存在。

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {    
        services.AddMvc();
        services.AddDbContext<VideosContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseBrowserLink();
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
        }

        app.UseStaticFiles();

        app.UseMvc(routes =>
        {
            routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
        });
    }
}
    {
      "ConnectionString": {
        "DefaultConnection": "Server =(localdb)\\mssqllocaldb;Database=Videos;Trusted_Connection=True;MultipleActiveResultSets=true"
    },
    "Logging": {
      "IncludeScopes": false,
      "LogLevel": {
        "Default": "Warning"
      }
    }
}

public static void Main(string[] args)
{
     BuildWebHost(args).Run();
}

public static IWebHost BuildWebHost(string[] args) =>
   WebHost.CreateDefaultBuilder(args)
      .UseStartup<Startup>()
      .Build(); 

我做错了什么?提前感谢您的任何建议。

2 个答案:

答案 0 :(得分:1)

您的应用设置JSON文件是否具有正确的语法?

 let questions: String[] = [];
 let num = Array.from(Array(5).keys()); //this makes num = [0, 1, 2, 3, 4]
 var self = this;
 asyncLoop(num, function (item, next) {

    self.quesmodel.count().exec(function (err, count) {
       var random = Math.floor(Math.random() * count)
       self.quesmodel.findOne().skip(random).exec(function (err, result) {
          questions.push(result._id);
          test.questions = questions;
          next();
       });
    });
}, function (err) {
  if(err)
     throw err;
  else {
     console.log(test.questions);
     console.log('Finished!');
  }
});

答案 1 :(得分:0)

您正在使用GetConnectionString方法从appsettings.json获取连接字符串的值,因此您需要考虑该方法只是GetSection("ConnectionStrings")["name"]的简写。

由于您在appsettings.json中有ConnectionString(单数),因此预计会出现这样的错误(即没有 ConnectionString 键)。

如果您想保留单数密钥,则应使用GetSection("ConnectionString")["DefaultConnection"]代替。否则,您需要更新appsettings.json文件。