Пример Blazor CRUD: ошибка HTTP 500 для запроса на сервере IIS

asp.net-core blazor c# iis

Вопрос

Я только что опубликовал пример Blazor CRUD на локальном сервере. Веб-сайт работает хорошо, но я получаю HTTP-ошибку 500, когда я перехожу на страницу данных извлечения. Все работает хорошо, когда я запускаю Visual Studio, но сервер IIS. У меня есть строка подключения в файле контекста. Я также редактировал строку подключения на странице настроек пула приложений, но все еще не работал.

Это часть кода, которую я использую в файле контекста:

        optionsBuilder.UseSqlServer(@"Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=master;Trusted_Connection=True;");

Я также использую эту строку подключения для IIS: введите описание изображения здесь

Принятый ответ

Ответ заключается в том, что здесь есть два разных экземпляра LocalDB. В отличие от экземпляров SQL Server Express, работающих под управлением Windows, экземпляры LocalDB работают как пользовательские процессы. Когда разные пользователи Windows подключаются к LocalDB, они будут работать с разными процессами LocalDB для каждого из них. Когда мы подключаемся к (localdb) \ v11.0 из Visual Studio, для нас запускается экземпляр LocalDB и запускается как наша учетная запись Windows. Но когда веб-приложение, работающее в IIS как ApplicationPoolIdentity, подключается к LocalDB, для него запускается другой экземпляр LocalDB и работает как ApplicationPoolIdentity! Фактически, хотя Visual Studio и веб-приложение используют одну и ту же строку соединения LocalDB, они подключаются к различным экземплярам LocalDB. Очевидно, что база данных, созданная из Visual Studio в нашем экземпляре LocalDB, не будет доступна в экземпляре LocalDB веб-приложения.

Простое исправление использует SQL Server Express вместо LocalDB

Более подробная информация - https://blogs.msdn.microsoft.com/sqlexpress/2011/12/08/using-localdb-with-full-iis-part-2-instance-ownership/



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow