istudent Ответов: 1

Веб-приложение .net 2.0 выдает ошибки при переносе на windows server 2008 r2


У меня есть старые asp.net веб-приложение, которое перемещается с windows server 2003 ( я верю ) на 64-разрядную версию windows server 2008 r2. Мое приложение было встроено в .NEt 2.0 каждый раз, когда я пытался запустить приложение, оно выдает ошибку типа "ould not load file or assembly" Oracle.Web, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342' или одна из его зависимостей. Доступ запрещен", и если я обновил страницу, она показывает другую ошибку, например, какую-то проблему в ServiceModel.
Я настроил приложение на запуск в пуле приложений .Сеть 2.0. Я установил 32-битный false, управляемый режим трубопровода-классический. Он работает на идентификаторе сетевой службы.
Когда он вызвал исключение клиента Oracle, я заглянул в GAC,и у нас действительно есть Oracle web version 2.112.1.0 x86, amd на нашем сервере.
Когда он выдал ошибку ServiceModel, я проверил applicationHost config, и у нас есть следующие настройки в конфигурационном файле.
Я также попытался построить приложение в .Net 4.0 после изменения, изменив клиент Oracle на библиотеку управляемого доступа Oracle. Приложение построено успешно без каких-либо ошибок, но когда я попытался опубликовать приложение, оно бросило не может загрузиться MyWebApp.dll ошибка.
Я не знаю, как заставить приложение работать.

Что я уже пробовал:

Я настроил приложение на запуск в пуле приложений .Сеть 2.0. Я установил 32-битный false, управляемый режим трубопровода-классический. Он работает на идентификаторе сетевой службы.
Когда он вызвал исключение клиента Oracle, я заглянул в GAC,и у нас действительно есть Oracle web version 2.112.1.0 x86, amd на нашем сервере.
Когда он выдал ошибку ServiceModel, я проверил applicationHost config, и у нас есть следующие настройки в конфигурационном файле.
Я также попытался построить приложение в .Net 4.0 после изменения, изменив клиент Oracle на библиотеку управляемого доступа Oracle. Приложение построено успешно без каких-либо ошибок, но когда я попытался опубликовать приложение, оно бросило не может загрузиться MyWebApp.dll ошибка.

1 Ответов

Рейтинг:
7

Dave Kreskowiak

Это всего лишь предположение, но похоже, что код вашего сайта скомпилирован для таргетинга на "AnyCPU". Подсказка, которую я использую, заключается в том, что вы используете 32-разрядный клиент Oracle и переместили код на 64-разрядный сервер.

Перейдите в свойства проекта, перейдите на вкладку сборка и измените целевую платформу с AnyCPU на x86. Перекомпилируйте, разверните и посмотрите, что произойдет.


istudent

Я сделал, как вы сказали, построил и опубликовал таргетинг приложений на x86, установил пул приложений на .net 2.0, 32-битный включен, классический управляемый конвейер, identity to network service, но он все еще жалуется, что не может загрузить файл или сборку Oracle.Web, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342' или одна из его зависимостей. Доступ запрещен.

Dave Kreskowiak

Какая версия клиента Oracle установлена на сервере?

istudent

В c:\windows\assembly\ есть клиент oracle с той же версией для x86 и amd

Dave Kreskowiak

Это не ответ на вопрос, и это не то, где устанавливается клиент Oracle. По умолчанию он находится вне корня C: in C:\oracle.

istudent

у нас их тогда не было. Я мог видеть папку ODP, но не Oracle

Dave Kreskowiak

Да, любая библиотека, используемая для доступа к Oracle DB access, нуждается в установке клиента. В случае с ODP.NET, для этого требуется клиент Oracle 8.x или выше, в зависимости от версии базы данных, которую вы запрашиваете.

Вы можете получить клиента от здесь[^].

Я бы предложил сохранить код на 32-битном уровне и использовать 32-битный клиент Oracle. Если у вас есть какие-либо другие библиотеки, которые вы используете, скорее всего, они тоже 32-битные.

Вы не можете смешивать 64 и 32-битные биты в одном процессе, поэтому, если у вас даже есть одна библиотека, которую вы используете, которая является 32-битной, все должно быть 32-битным.

istudent

Сэр, odp.net который установлен на нашем сервере имеет как x86, так и x64. как вы думаете, мне действительно нужно или попросить моих старших установить другого клиента?

Dave Kreskowiak

ODP.NET это не клиент. Это интерфейс между вашим веб-приложением и клиентом.

УСТАНОВИТЕ КЛИЕНТ.

istudent

Сэр, это не новое заявление. Это старое приложение и в настоящее время работает в старой windows server 2003. Попытка здесь состоит в том, чтобы перенести приложение и убедиться, что оно работает в 2008 году, чтобы мы могли вывести из эксплуатации наш старый сервер. У меня вообще нет никаких знаний об этом приложении.

istudent

в ОРС читать мне файл, он говорит поставщик данных Oracle для .Чистая, управляемого водителем 12.1.0.1.0

istudent

теперь это то, что я сделал, я построил приложение в .net 4 и целевой x86 и установил Oracle.ManagedDataAccess из пакета nugget и установите пул приложений на .net 4. Я получил эту ошибку "404.2 страница, которую вы запрашиваете, не может быть обслужена из-за настроек списка ограничений ISAPI и CGI на веб-сервере"