Windows服务连接字符串中的实体框架

时间:2011-07-27 09:13:20

标签: c# entity-framework windows-services

我一直在为ASP.NET MVC站点使用DAL类库。 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 server的用户名和密码。存储库仍然适用于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文件无法找到,但我不知道如何解决此问题以提供服务权限,或者在何处放置配置文件以便服务可以访问所有内容。

0 个答案:

没有答案