Ошибка 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.

Убедитесь, что вы также установили строку подключения.

Другие вопросы по тегам