К сожалению, я пытаюсь использовать Oracle из .NET, и это похоже на возвращение к 1997 году. Объяснение вещей правильно является признаком слабости, и переменные реестра и среды, по-видимому, работают.
Итак, как далеко у меня есть.
Я заполнил огромную форму о моей жизни на Oracle.com и загрузил
64-разрядный экземпляр Windows ODBC, 11.2.0.3.0 и распакуйте его в папку. Основной 64-разрядный мгновенный клиент Windows, 11.2.0.3.0, и распакуйте его в ту же папку, что и выше.
Я запустил install.exe(нет MSI, помните, что это 1997).
Я добавил переменную среды TNS_NAMES, указывающую на корпоративный файл TNSNames.ora на сетевом ресурсе, и установил быструю DSN в панели управления и выполнил тест - он сработает!
Затем я загрузил версию XCOPY последней версии ODP.NET для .NET 4.0 и скопировал ее в папку "Зависимости" в моей рабочей области управления версиями.
Я добавил ссылку из моего проекта в Зависимости \odp.net4\odp.net\bin\4\Oracle.DataAccess.dll
Я прочитал, что мне нужно сообщить управляемым данным ODP.NET, где он может найти свои неуправляемые библиотеки Oracle, которые, как я предполагаю, Зависимости \odp.net4\bin\OraOps11w.dll но это могут быть некоторые другие двоичные файлы Oracle где-то?
Теперь я устанавливаю параметр файла конфигурации под названием DllPath. К сожалению, документы Oracle, похоже, не понимают, что файлы конфигурации .NET нуждаются в их разделах в разделе конфигурации.
Вот раздел конфигурационного файла.
<oracle.dataaccess.client>
<add key="DllPath" value="D:\Trunk\Dependencies\odp.net4\bin" />
</oracle.dataaccess.client>
Что входит в конфигурацию? Несколько тем, которые я нашел на этом примере, приводят пример, а затем говорят: "Я не знаю, какой тип = должен быть", что является основным битом!
Кто-нибудь может мне посоветовать? Кто-нибудь знает ссылку на Руководство Dummies для запроса Oracle View из .NET?
Есть ли что-то, что я могу сделать в 1997 году, чтобы остановить использование Oracle в 2012 году?
UPDATE
Просто быстрое обновление. Я скопировал OraOps11w.dll в папку моего выходного bin и удалил все изменения файла web.config, которые я ранее добавил.
Теперь я получаю следующую ошибку, которую я изучаю.
Не удалось загрузить файл или сборку "Oracle.DataAccess" или один из зависимостей. Была сделана попытка загрузить программу с неправильной Формат.
Некоторые другие форумы говорят о регистрации Oracle.DataAccess.dll в GAC, который я очень хочу избежать - и я не могу понять, какая разница будет в любом случае, но я отдам это.
ОБНОВЛЕНИЕ 2
Регистрация библиотеки Oracle.DataAccess.dll в GAC не имела никакого значения, и я ее незарегистрировал.
Конец рабочей недели на мне, и я должен поймать поезд, но я отправил по электронной почте другую команду разработчиков и надеюсь, что они сражались в этой битве раньше (и не использовали ночные выдержки, как и все остальные).
ОБНОВЛЕНИЕ 3
Сегодня утром я загрузил и установил IIS Express 8.0 RC с 64-разрядной версией. 64-разрядная версия не поддерживается VS2010, поэтому ее необходимо запустить из командной строки. Это было довольно просто, посмотрев в диспетчере задач, я смог увидеть, какая команда VS использует для iisexpress.exe * 32.
К сожалению, я получаю эту ошибку при просмотре на моем сайте, размещенном на 64-битном IIS Express.
Обработчик "ExtensionlessUrl-Integrated-4.0" имеет плохой модуль "ManagedPipelineHandler" в своем списке модулей
Это слишком большая проблема в этой строке запроса, поэтому я попытаюсь использовать 32-разрядную версию ODP.NET.
ОБНОВЛЕНИЕ 4
Я загрузил полную установку 32-разрядной версии, но я испугался, когда увидел Oracle Universal Installer. Это выглядит слишком 90-х, чтобы доверять моей драгоценной коробке. Поэтому я использую 32-битный клиент XCopy, это позволяет мне воспитывать домашнюю страницу моего сайта, поэтому ссылки работают. Спасибо за те, которые предложили проблему несоответствия архитектуры 32/64.
Теперь я рассматриваю эту ошибку при создании нового OracleConnection.
Поставщик несовместим с версией клиента Oracle
ОБНОВЛЕНИЕ 5 Я думаю, что я это сделал.
Итак, я загрузил 32-разрядный последний 11g "Instant Client" и просто поместил его в папку \Dependencies для кодовой базы trunk. Я добавил эту папку в переменную системной среды% PATH%, а также добавил туда файл OraOps11w.dll.
Наконец, _oracleConnection = новый OracleConnection (connectionString) не бросает! Теперь мне нужно убедиться, что у меня есть бутылка Laphroaig на столе, когда я прихожу к разводке, чтобы продлить.
Итак, чтобы повторить, для IIS Express 7.5 (который является 32-разрядным процессом) в Windows 7, 64:
-
Загрузите и извлеките 32-бит 11g "Instant Client" в какую-то папку и добавьте это место в свой PATH. Oci.dll является основной неуправляемой библиотекой на стороне клиента Oracle.
-
Загрузите и извлеките 32-разрядную ODP.NET в какую-то папку.
-
Скопируйте файл OraOps11w.dll в основную папку, в которой находится Instant Client (см. выше).
-
Добавить переменную среды TNS_ADMIN, указывающую на папку, в которой находится текстовый файл TNSNames.ora. Это похоже на файл hosts и сопоставляет имена служб Oracle именам хостов сервера.
-
Закройте и заново откройте Visual Studio, чтобы убедиться, что вы берете новые переменные среды и добавляете ссылку на управляемую сборку Oracle.DataAccess.dll в своей папке ODP.NET.
Это должно быть так. Звучит довольно просто, когда вы знаете, как это сделать.
ОБНОВЛЕНИЕ 5.1
Исследование ошибки ниже, о которой я изначально не сообщал, так как я был уверен, что это проблема брандмауэра. Компания, на которой я работаю, имеет по два на каждой рабочей станции, но я только что открыл сырой сокет на сервер Oracle, чтобы этого не было.
ORA-12541: TNS: нет слушателя