У меня есть веб-приложение, которое я создал с помощью Entity Framework Code First. При его настройке мне удалось сопоставить мою строку подключения к БД с моим DBContext, указав полное пространство имен и класс DBContext в качестве имени строки подключения.
<add name="MyClassProject.EfDbContext" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MyDatabase;Integrated Security=true;User Id=MyUsername;Password=MyPassword;" providerName="System.Data.SqlClient"/>
Первоначально, когда я настраивал проект, я просто создал его в c:\inetpub\wwwroot и просто запустил через Visual Studio. Все работало нормально.
Теперь я пытаюсь создать код в отдельной папке веб-сайта и запустить веб-сайт как собственный веб-сайт и пул приложений в IIS. Я настроил веб-сайт и файл hosts, но когда я запустил его, я получил следующую ошибку.
Не удается открыть базу данных MyDatabase, запрошенную при входе в систему. Вход не выполнен.
Ошибка входа для пользователя «IIS APPPOOL\MyAppPool».
Мне интересно, почему это происходит, поскольку я, кажется, указываю имя пользователя и пароль безопасности для использования для БД в моей строке подключения .... так почему он пытается подключиться как пул приложений, в котором работает мой веб-сайт? ?
Кроме того, как я могу это исправить, не предоставляя MyAppPool (или сетевой службе, если я изменил ее на это) разрешения БД в SQL Server?
Обновление: я должен был упомянуть, что я инициализирую свой класс DBContext, используя:
namespace MyClassProject
{
public class EfDbContext : DbContext
{
public EfDbContext() : base ("MyDatabase")
{
}
}
}