Можно ли заставить ApplicationPoolIdentity присоединить базу данных с User Instance = true? - PullRequest
1 голос
/ 15 февраля 2011

Я использую «настоящий» сервер IIS 7.5 на этапе разработки. Сайт указывает на папку веб-проекта, которая содержит WebProjectDir\App_Data\database.mdf.

Сайт работает под ApplicationPoolIdentity следующим образом:

enter image description here

При запуске приложения появляются следующие ошибки:

Failed to generate a user instance of SQL Server due to failure in retrieving the user's local application data path. Please make sure the user has a local user profile on the computer. The connection will be closed.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Failed to generate a user instance of SQL Server due to failure in retrieving the user's local application data path. Please make sure the user has a local user profile on the computer. The connection will be closed.

Source Error:

Line 14:         public ActionResult Index()
Line 15:         {
Line 16:             return View(db.Genres.ToList());
Line 17:         }
Line 18: 


Source File: G:\MvcMusicStore\Controllers\StoreController.cs    Line: 16 

Я могу устранить эти ошибки, установив приложение для запуска под NetworkService. Однако я хочу использовать ApplicationPoolIdentiy, если это возможно с любой настройкой. Как это сделать?

Ответы [ 2 ]

2 голосов
/ 15 февраля 2011

Эта ошибка относится к SQL Express.

Взгляните на эту тему:
http://social.msdn.microsoft.com/forums/en-US/sqldatabaseengine/thread/527bf46a-b3fe-4ae6-8b41-eb40024399c8/

Проблема в том, что любая учетная запись, которая подключается напрямую к файлу MDF через SQL Express, должна иметь локальный профиль пользователя. Если у вас есть полная версия SQL Server, запущенная на этом (или другом) сервере, вы сможете прикрепить этот файл MDF в качестве базы данных и подключиться таким образом. В противном случае ваш пул приложений должен будет работать под учетной записью, имеющей профиль, например NETWORK SERVICE.

1 голос
/ 25 февраля 2011

@ Дейв, я нашел решение вчера.

Установка Load User Profile на True сделает ApplicationPoolIdentity способным присоединить базу данных.

enter image description here

...