Я использую библиотеку классов DAL для сайта ASP.NET MVC. В библиотеке DAL есть хранилище для запросов.
Все работало нормально, пока я не попытался использовать библиотеку DAL для службы Windows. Служба выдает исключение, когда я достигаю RARepository _repository = new RARepository();
или более конкретно, когда хранилище достигает строки private readonly RAEntities6 entities = new RAEntities6();
.
Исключение составляет
System.ArgumentException: The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid.
at System.Data.EntityClient.EntityConnection.ChangeConnectionString(String newConnectionString)
at System.Data.EntityClient.EntityConnection..ctor(String connectionString)
at System.Data.Objects.ObjectContext.CreateEntityConnection(String connectionString)
at System.Data.Objects.ObjectContext..ctor(String connectionString, String defaultContainerName)
at RA.Models.RAEntities6..ctor() in C:\RADAL\Models\RAEntities.Designer.cs:line 54
at RA.Repositories.RARepository..ctor() in C:\RADAL\Repositories\RARepository.cs:line 11
at GDMService.ASU.OnElapsedTime(Object sender, ElapsedEventArgs e) in C:\RAPC7\GDMService\Service1.cs:line 78
Я подумал, что это может быть проблема со строкой соединения, использующей встроенную защиту от службы (которая работает как локальная система), поэтому я попытался сначала изменить строку соединения в app.config, чтобы иметь имя пользователя и пароль для сервера sql , Репозитории все еще работали для Сайта MVC, но не для Сервиса. После этого я попытался изменить строку подключения обратно на встроенную защиту и запустил службу как пользователь, но ошибка была той же.
В исключении строка 78 - RARepository _repository = new RARepository();
, строка 11 - private readonly RAEntities6 entities = new RAEntities6();
, а строка 54 - в конструкторе конструктора структуры сущностей
public RAEntities6() : base("name=RAEntities6", "RAEntities6")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
Редактировать: Я думаю, что произошло то, что когда служба запущена, у нее больше нет прав на открытие файла конфигурации (который содержит строку подключения), теперь я обнаружил, что когда служба запуск загрузки файлов .INI не может быть найден, но я не уверен, как решить эту проблему, чтобы предоставить службе разрешения, или где разместить файлы конфигурации, чтобы служба могла получить доступ ко всему.