1

基本的な .NET 4 Web サイトがあります。フォルダーに保存する SQL Server Compact データベースにマップする Entity Framework モデルが含まれていApp_Dataます。

OData サービスを Web サイトに追加し、エンティティを公開しましたが、すべて正常に動作し、共有ホスティングに公開し、問題なくデータベースに読み書きできます。

Application_Startただし、 (小さな検索インデックスを作成するために)実行中にデータベースのデータにアクセスしたいと考えています。アプリケーション ライフ サイクルのその時点で Entity Framework コンテキストのインスタンスを作成すると、データベースにアクセスできないという例外がスローされます。ローカルでは問題なく動作しますが、共有ホスティングに公開するときの問題です。

通常、これは単純なアクセス許可の問題だと思いますが、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
4

1 に答える 1

0

OK、私はそれを解決したと思います。

アプリケーションが起動すると、NT AUTHORITY \NETWORKSERVICEアカウントで実行されます。

通常のWebリクエストが届くと、\IUSR_アカウントを使用して実行されます。

私の共有ホスティングでは、NETWORK SERVICEアカウントには明らかにApp_Dataフォルダーへの書き込みアクセス権がありませんが、IUSRアカウントには書き込みアクセス権があります。

なぜ問題が発生しているのかという質問に答えると思います。

于 2013-03-07T21:28:28.553 に答える