Вопрос

Я использую Firebird, встроенный в веб-сайт ASP.NET.Когда я запускаю VS2010 в качестве администратора, я могу успешно вызвать базу данных, если я запускаю его как другой пользователь, я получаю эту ошибку:

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

Я развернул службу в IIS, но я получаю ту же ошибку при вызове ее.Кроме того, чтобы он работал под учетной записью администратора, мне пришлось скопировать FBEMDEB.DLL в Windows / System32.

Я сделал тот же звонок в БД из приложения в консоли, и он работает для всех учетных записей пользователей.У меня есть только эта проблема с веб-сервисом.

Любые предложения? Я использую Firebird 2.5

Это было полезно?

Решение

звучит как проблема с разрешениями.Пользователь, который запускает пул приложения, вероятно, не может сохранить на диске.Это рекомендуется от трассировки стека, который вы отправили:

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

Похоже, что API Firebird API вы используете некоторую технику для создания сборки во время выполнения.Я бы посмотрел в документацию API, чтобы увидеть, есть ли способ настроить любые временные каталоги или что-то подобное.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top