繁体   English   中英

设置DBContext时出现ASP.NET Core 2.2错误(在Kestrel中起作用,不在IIS Express中起作用)

[英]ASP.NET Core 2.2 error when setting up DBContext (works in Kestrel, not in IIS Express)

我有一个.Net Core 2.2 Web项目,其中在Startup.cs文件中设置了dbcontext连接:

services.AddDbContext<FirmDirectoryContext>(options =>  
              options.UseSqlServer(Configuration.GetConnectionString("DefaultDatabase")));

当我运行Kestrel时,它可以工作,但是如果尝试使用IIS Express运行它,则会得到以下信息:

{System.ArgumentNullException:值不能为null。 参数名称:connectionString

连接字符串显然是在appsettings.json文件中设置的,否则Kestrel也将失败?

我不确定您的appsettings.json看起来如何,但是您应该在json文件中像这样设置一个部分:

"ConnectionStrings": {
    "DefaultDatabase": "<Your connection string>"
}

如果您的环境设置为开发,则dotnet从appsettings.development.json获取连接字符串。

确保在那里也设置了连接字符串。

看来问题出在我的Program.cs文件中。 我已经复制了.NET Core 2.1项目中使用的一些代码

WebHost.CreateDefaultBuilder(args)
     .UseContentRoot(Directory.GetCurrentDirectory())
     .UseWebRoot(Directory.GetCurrentDirectory() + "\\wwwroot") // THIS LINE FIXES STATIC FILES ON PROD
     .UseIISIntegration()
     .UseStartup<Startup>();

一旦对其进行编辑以删除Directory.GetCurrentDirectory()代码,它就会起作用。

WebHost.CreateDefaultBuilder(args)
     .UseIISIntegration()
     .UseStartup<Startup>();

现在,我必须在服务器上进行测试以查看其是否仍然有效。 感谢您的答复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM