Ошибка ASP.NET Core 2.2 при настройке DBContext (работает в Kestrel, а не в IIS Express)
У меня есть веб-проект.Net Core 2.2, в котором я настроил соединения dbcontext в файле Startup.cs:
services.AddDbContext<FirmDirectoryContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultDatabase")));
Когда я запускаю Kestrel, он работает, но если я пытаюсь запустить его с помощью IIS Express, я получаю следующее:
{System.ArgumentNullException: значение не может быть нулевым.Имя параметра: connectionString
Строка подключения, очевидно, задана в файле appsettings.json, иначе Kestrel тоже потерпит неудачу?
3 ответа
Похоже, проблема была в моем файле 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>();
Теперь мне нужно проверить сервер, чтобы убедиться, что он все еще работает. Спасибо за ответы.
Я не уверен, как выглядит ваш appsettings.json, но у вас должен быть раздел в вашем файле json:
"ConnectionStrings": {
"DefaultDatabase": "<Your connection string>"
}
Если ваша среда установлена как разработка, dotnet получает строку подключения из appsettings.development.json.
Убедитесь, что вы также установили строку подключения.