Pregunta

Estoy usando Firebird incrustado en un sitio web ASP.NET.Cuando ejecuto VS2010 como administrador, puedo llamar con éxito la base de datos, si lo ejecuto como un usuario diferente, obtendro este error:

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

He desplegado el servicio en IIS, pero recibo el mismo error al llamarlo.Además, para que funcione bajo la cuenta de administrador, tuve que copiar fbemdeb.dll en Windows / System32.

He realizado la misma llamada al DB desde dentro de una aplicación de consola y funciona para todas las cuentas de usuario.Solo tengo este problema con el servicio web.

¿Alguna sugerencia? Estoy usando Firebird 2.5

¿Fue útil?

Solución

Suena como un problema de permiso.El usuario que ejecuta el grupo de aplicaciones probablemente no pueda guardar en el disco.Esto es sugerido por la traza de la pila que ha enviado:

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

Parece la API de Firebird que usa una técnica para construir un ensamblaje en tiempo de ejecución.Miraría en la documentación de la API para ver si hay una manera de configurar los directorios temporales o algo así.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top