#web-services #odp.net
#веб-сервисы #odp.net
Вопрос:
Я создал веб-службу в .net4.0. Он подключается к базе данных oracle с помощью ODP.NET4. К вашему сведению, я использовал ODAC112021Xcopy_X64 и установил odp4 и asp4. Служба хорошо работает в среде разработки.
Но после публикации его в IIS, работающем на том же компьютере, я получаю следующее исключение:
Система.ServiceModel.FaultException`1 не был обработан Сообщение = Не удалось загрузить файл или сборку 'Oracle.Доступ к данным, версия = 2.112.2.0, Культура = нейтральная, PublicKeyToken = 89b483f429c47342' или одна из его зависимостей. Определение манифеста найденной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040) Источник= mscorlib Трассировка стека: Трассировка стека сервера: в системе.ServiceModel.Каналы.Канал обслуживания.Throwiffaultunderstooded(ответ на сообщение, ошибка MessageFault, действие строки, версия версии MessageVersion, FaultConverter faultConverter) в системе.ServiceModel.Каналы.Канал обслуживания.Ошибка обработки (операция ProxyOperationRuntime, ProxyRpc и rpc) в системе.ServiceModel.Каналы.Канал обслуживания.Вызов (строковое действие, логический oneway, операция ProxyOperationRuntime, входы объекта [], выходы объекта [], тайм-аут временного интервала) в системе.ServiceModel.Каналы.ServiceChannelProxy.invokeService(вызов метода IMethodCallMessage, операция ProxyOperationRuntime) в системе.ServiceModel.Каналы.ServiceChannelProxy.Вызов (сообщение iMessage) Повторное создание исключения в [0]
Я использую 64-битный odp.net , я работаю на 64-битной версии Windows Server 2008 R2 и переключился на 64-битную версию в Visual Studio.
Кто-нибудь может сказать мне, чего мне не хватает или что я делаю неправильно?
Я также попытался скопировать ORACLE.DATACCESS.dll
в папку bin.
Заранее спасибо
Ответ №1:
Это выстрел в темноте, поскольку я не могу воссоздать проблему, но при запуске в IIS вам необходимо убедиться, что уровни доверия для конкретной платформы (в данном случае 4.0), которую вы используете, могут получить доступ к соответствующим библиотекам DLL и файлам.
вы можете либо удалить / переустановить бит odp, либо напрямую вызвать программное обеспечение «oracle permission» по адресу %ora_homeproduct11.2.0client_1odp.netbin4OraProvCfg.exe
Кроме того, ознакомьтесь с readme (в частности, с этой частью): %ora_homeproduct11.2.0client_1odp.netdocreadme.txt (вот рекламный ролик, который, я думаю, может вас заинтересовать)
==============================
ORACLEPERMISSION RELATED NOTES
==============================
1. Configuring OraclePermission for Web Applications in high or medium trust
For Web Applications operating under high or medium trust, OraclePermission
needs to be configured in the appropriate "web_<trust level>.config" file so
that the application does not encounter any security errors. This
configuration can be done through the OracProvCfg tool. OraProvCfg.exe will
make the appropriate entries in both web_hightrust.config as well as
web_mediumtrust.config associated with the specified .NET framework version.
Given below is an example on the usage of OraProvCfg tool for configuring
OraclePermission in a .NET 2.0 web application:
OraProvCfg.exe /action:config /product:odp /component:oraclepermission
/frameworkversion:v4.0.30319
/providerpath:<Oracle.DataAccess.dll full path>
On running the above command, The following entry will be made in
"web_hightrust.config" and "web_mediumtrust.config" under ASP.NET permissionset
<IPermission class="Oracle.DataAccess.Client.OraclePermission, Oracle.DataAccess, Version=4.112.2.50, Culture=neutral, PublicKeyToken=89b483f429c47342" version="1" Unrestricted="true" />
OraProvCfg can also be used to remove these entries from these config files
when they need to be removed.
OraProvCfg.exe /action:unconfig /product:odp /component:oraclepermission
/frameworkversion:v4.0.30319
/providerpath:<Oracle.DataAccess.dll full path>
2. Configuring OraclePermission For Windows Applications in partial trust
For Windows applications operating in a partial trust environment, the
OraclePermission entry should be specified under the appropriate permission
set in security.config file. (Security.config is available in
%windir%Microsoft.NETFramework{version}CONFIG). The example below
specifies the OraclePermission entry that would be required for a .NET 2.0
Windows application
<IPermission class="Oracle.DataAccess.Client.OraclePermission, Oracle.DataAccess, Version=4.112.2.50, Culture=neutral, PublicKeyToken=89b483f429c47342" version="1" Unrestricted="true" />
в частности, проверьте эти файлы конфигурации («web_hightrust.config» и «web_mediumtrust.config«) для поиска аналогичной записи
<IPermission class="Oracle.DataAccess.Client.OraclePermission,
Oracle.DataAccess, Version=4.112.2.50, Culture=neutral,
PublicKeyToken=89b483f429c47342" version="1" Unrestricted="true" />
(это readme из бета-версии 3 для EF, поэтому я ожидаю, что номера версий будут другими)
Вы также можете посмотреть на этот форум (похоже, это похоже на эту мысль) https://forums.oracle.com/forums/thread.jspa?threadID=575320
hth
Ответ №2:
Проверьте, совпадает ли целевая платформа ODAC на вашем компьютере-компиляторе (32/64 бит) с производственным сервером, на котором вы размещаете свои веб-службы.