我有一个基本的 .NET 4 网站。它包含一个实体框架模型,该模型映射到我存储在App_Data
文件夹中的 SQL Server Compact 数据库。
我已经向网站添加了 OData 服务并公开了实体并且一切正常,我可以发布到我的共享主机并读取/写入数据库而不会出现问题。
Application_Start
但是,我想在(创建一个小型搜索索引)期间访问我的数据库中的数据。当我在应用程序生命周期的那个时刻创建实体框架上下文的实例时,它会引发一个异常,即它无权访问数据库。它在本地运行良好,只是当我发布到我的共享主机时出现问题。
通常我认为这只是一个直接的权限问题,但 OData 服务工作正常,因此必须使用与在Application_Start
...中执行的代码不同的权限执行。
有没有人见过这个或有任何想法可能会发生什么?
System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
at System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(Int32 errorCode)
at System.Data.SqlServerCe.UnmanagedLibraryHelper..ctor(String fileName)
at System.Data.SqlServerCe.NativeMethodsHelper..ctor(String modulePath)
at System.Data.SqlServerCe.NativeMethods.LoadValidLibrary(String modulePath)
at System.Data.SqlServerCe.NativeMethods.LoadNativeBinariesFromPrivateFolder(String privateInstall)
at System.Data.SqlServerCe.NativeMethods.LoadNativeBinaries()
at System.Data.SqlServerCe.SqlCeConnection..ctor()
at System.Data.SqlServerCe.SqlCeProviderFactory.CreateConnection()
at System.Data.EntityClient.EntityConnection.GetStoreConnection(DbProviderFactory factory)
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 LDS.Model1Container..ctor() in *REMOVED*\LDS\Model1.Designer.cs:line 40
at LDS.Global.BuildIndex() in *REMOVED*\LDS\Global.asax.cs:line 38