我一直在为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文件无法找到,但我不知道如何解决此问题以提供服务权限,或者在何处放置配置文件以便服务可以访问所有内容。