db4o работает в asp.net Среде среднего уровня доверия

StackOverflow https://stackoverflow.com/questions/1057315

  •  21-08-2019
  •  | 
  •  

Вопрос

Я использую встроенную клиент-серверную версию db4o (я вызвал OpenServer() вместо метода OpenFile()), чтобы я мог разместить asp.net веб-сайт, на котором несколько пользователей будут одновременно читать и записывать данные в базу данных.Единственная проблема заключается в том, что веб-хостинг, который мы используем, является средой среднего доверия, поэтому он выдает ошибку, указывающую, что сборка не поддерживает частично доверенных абонентов...

Интересно, есть ли у кого-нибудь какие-либо предложения о том, как заставить это работать.Спасибо!

::Обновить ::

Я перекомпилировал библиотеку dll db4o с атрибутом [AllowPartiallyTrustedCallers], и теперь я получаю следующую конкретную ошибку:

Система.Исключение TypeInitializationException не было обработано пользовательским кодом Message="Инициализатор типа для 'DataObjecten.db4oManager' выдал исключение". Имя типа="DataObjecten.db4oManager" Исключение InnerException:Система.Безопасность.Исключение SecurityException Сообщение="Запрос разрешения типа 'System.Безопасность.Разрешения.Ошибка SecurityPermission, mscorlib, версия = 2.0.0.0, Культура = нейтральная, PublicKeyToken=b77a5c561934e089". Источник="Db4objects.Db4o" Трассировка стека:в Db4objects.Db4o.Внутренний.Platform4.addShutdownHook(контейнер PartialObjectContainer) в Db4objects.Db4o.Внутренний.PartialObjectContainer.Инициализируйте 1(IConfiguration config) в Db4objects.Db4o.Внутренний.PartialObjectContainer.Открыть() в Db4objects.Db4o.Внутренний.IoAdaptedObjectContainer..ctor(конфигурация IConfiguration, имя файла строки) в Db4objects.Db4o.Внутренний.ObjectContainerFactory.Откройте objectcontainer(IConfiguration config, строковое имя файла базы данных) в Db4objects.Db4o.Db4oFactory.OpenFile(конфигурация IConfiguration, строковое имя файла базы данных) в Db4objects.Db4o.Db4oFactory.OpenServer(конфигурация IConfiguration, строковое имя файла базы данных, порт Int32, INativeSocketFactory SocketFactory) в Db4objects.Db4o.Db4oFactory.Открытый сервер (конфигурация IConfiguration, строковое имя файла базы данных, порт Int32) в DataObjecten.db4oManager..cctor() Исключение InnerException:

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

Решение 3

Я обнаружил, что db4o НЕ будет работать в среде среднего доверия.Любой, кто ищет nosql-решение, которое можно встраивать или использовать с поддержкой сервера в среде среднего уровня доверия, должен взглянуть на ravendb.net - решило все мои проблемы...(необходимо использовать механизм управляемого хранилища munin).

Аналогично объектной базе данных (db4o), но без всей этой головной боли и гораздо более универсально.Кроме того, работает с такими вещами, как ссылка или стандартный запрос через JSON / HTTP...

Большие льготы заключаются в:

Полнотекстовый поиск с помощью Lucene.NET Сегментирования / автоматического сегментирования Репликация (WAN / LAN) Индексирование LINQ / автоматическое индексирование Отличная производительность (намного быстрее, чем db4o) Встроен в .NET Совместим с ACID Транзакции Многопользовательский Запуск в режиме клиент/сервер или встроенный Способен работать в режиме среднего доверия

Другие советы

Я не знаю, работает ли это, но вы могли бы попробовать написать DLL-оболочку, которая имеет AllowPartiallyTrustedCaller установите значение true и передает все вызовы библиотеке DLL db4o.

Поскольку db4o имеет открытый исходный код, вы могли бы загрузить и перекомпилировать с AllowPartiallyTrustedCaller конечно, настройтесь на то, чтобы быть самим собой.

Это поток, однако, предполагает, что это может не сработать.

Я также столкнулся с этой проблемой, и похоже, что db4o не будет работать в режиме клиент / сервер в среде веб-приложений среднего уровня доверия.
Этот проект для ASP.NET Провайдеров, использующих db4o кажется, это подтверждает.
В нем говорится, что db4o зависит от отражения и неуправляемого кода, которые оба запрещены при среднем доверии.
Я думаю, что ваша единственная надежда добиться прогресса в этом - последовать их предложению и найти общего поставщика, который позволит вам запускать ваш код с полным доверием.
Очень разочаровывает, так как мне нравилось работать с db4o, и это только что свело на нет несколько недель работы.

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