Question

J'utilise Firebird intégré à un site Web ASP.NET.Lorsque j'exécute VS2010 en tant qu'administrateur, je peux appeler avec succès la base de données, si je l'exécute comme un autre utilisateur, je reçois cette erreur:

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()

J'ai déployé le service dans IIS mais j'ai la même erreur lors de l'appelant.De plus, pour que cela fonctionne sous le compte administrateur, j'ai dû copier FBEMDEB.dll dans Windows / System32.

J'ai fait le même appel à la DB à partir d'une application de console et cela fonctionne pour tous les comptes d'utilisateurs.Je n'ai que ce problème avec le service Web.

Toute suggestion? J'utilise Firebird 2.5

Était-ce utile?

La solution

sonne comme un problème d'autorisation.L'utilisateur qui exécute le pool d'applications ne peut probablement pas enregistrer sur le disque.Ceci est suggéré par la trace de la pile que vous avez envoyée:

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

ressemble à l'API de Firebird, vous utilisez une technique pour construire un assemblage en runtime.Je regarderais dans la documentation de l'API pour voir s'il existe un moyen de configurer tous les répertoires temporaires ou quelque chose comme ça.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top