Domanda

Sto usando Firebird incorporato in un sito Web ASP.NET.Quando eseguo vs2010 come amministratore posso chiamare con successo il database, se lo eseguo come un utente diverso ottengo questo errore:

System.IO.IOException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
   at System.Reflection.Emit.ModuleBuilder.SavePEFile(RuntimeModule module, String fileName, Int32 entryPoint, Int32 isExe, Boolean isManifestFile)
   at System.Reflection.Emit.ModuleBuilder.Save(String fileName, Boolean isAssemblyFile, PortableExecutableKinds portableExecutableKind, ImageFileMachine imageFileMachine)
   at System.Reflection.Emit.AssemblyBuilder.SaveNoLock(String assemblyFileName, PortableExecutableKinds portableExecutableKind, ImageFileMachine imageFileMachine)
   at System.Reflection.Emit.AssemblyBuilder.Save(String assemblyFileName, PortableExecutableKinds portableExecutableKind, ImageFileMachine imageFileMachine)
   at System.Reflection.Emit.AssemblyBuilder.Save(String assemblyFileName)
   at FirebirdSql.Data.Client.Native.FbClientFactory.CreateInstance(TypeBuilder tb)
   at FirebirdSql.Data.Client.Native.FbClientFactory.GenerateFbClient(String dllName)
   at FirebirdSql.Data.Client.Native.FbClientFactory.GetFbClient(String dllName)
   at FirebirdSql.Data.Client.Native.FesDatabase..ctor(String dllName, Charset charset)
   at FirebirdSql.Data.FirebirdClient.ClientFactory.CreateDatabase(FbConnectionString options)
   at FirebirdSql.Data.FirebirdClient.FbConnectionInternal.Connect()
   at FirebirdSql.Data.FirebirdClient.FbConnectionPool.Create()
   at FirebirdSql.Data.FirebirdClient.FbConnectionPool.CheckOut()
   at FirebirdSql.Data.FirebirdClient.FbConnection.Open()
.

Ho schierato il servizio in IIS ma ottengo lo stesso errore quando lo chiamano.Inoltre, per farlo funzionare con l'account amministratore ho dovuto copiare fbemdeb.dll in Windows / System32.

Ho fatto la stessa chiamata al DB dall'interno di un'applicazione console e funziona per tutti gli account utente.Ho solo questo problema con il servizio web.

Qualche suggerimento? Sto usando Firebird 2.5

È stato utile?

Soluzione

suona come un problema di autorizzazione.L'utente che esegue probabilmente la pool dell'app non può salvare sul disco.Questo è suggerito dalla traccia dello stack che hai inviato:

   at System.Reflection.Emit.AssemblyBuilder.Save(String assemblyFileName)
.

Sembra che l'API Firebird sia utilizzata una certa tecnica per costruire un assembly in runtime.Guarderei nella documentazione API per vedere se c'è un modo per configurare qualsiasi directory temporanea o qualcosa del genere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top