Como eu uso o Oracle do .NET?

Infelizmente, estou tentando usar o Oracle do .NET e é como voltar a 1997. Explicar as coisas corretamente é um sinal de fraqueza e as variáveis ​​de registro e ambiente parecem estar presentes.

Então aqui está o quanto eu tenho.

Eu preenchi um formulário enorme sobre a minha vida no Oracle.com e baixei o

Cliente de Instância do Windows ODBC de 64 bits, 11.2.0.3.0 e descompactou em uma pasta.Cliente instantâneo básico de 64 bits do Windows, 11.2.0.3.0 e descompactou-o na mesma pasta acima.

Eu corri o install .exe (sem MSI, lembre-se este é 1997).

Eu adicionei uma variável de ambiente TNS_NAMES apontando para o arquivo corporativo TNSNames.ora em um compartilhamento de rede e configurei um DSN rápido no Painel de Controle e executei o teste - funcionou!

Em seguida, baixei a versão XCOPY do último ODP.NET para .NET 4.0 e copiei-a para a pasta Dependências, na área de trabalho do controle de origem.

Eu adicionei uma referência do meu projeto paraDependências \ odp.net4 \ odp.net \ bin \ 4 \ Oracle.DataAccess.dll

Eu li que preciso deixar que as coisas gerenciadas do ODP.NET saibam onde ele pode encontrar suas bibliotecas Oracle não gerenciadas, o que estou supondo serDependências \ odp.net4 \ bin \ OraOps11w.dll mas poderia ser algum outro binário Oracle em algum lugar?

Agora estou definindo um parâmetro de arquivo de configuração chamado DllPath. Infelizmente, os documentos do Oracle parecem não perceber que os arquivos de configuração do .NET precisam de suas seções conectadas na seção configSections.

Aqui está a seção do arquivo de configuração.

<oracle.dataaccess.client>
  <add key="DllPath" value="D:\Trunk\Dependencies\odp.net4\bin" />
</oracle.dataaccess.client>

O que acontece no configSection? Os poucos tópicos que eu encontrei sobre isso dão um exemplo e dizem "Eu não sei qual tipo = deveria ser", que é a parte principal!

Alguém pode me aconselhar? Alguém sabe um link para um guia de Dummies para consultar um Oracle View do .net?

Existe algo que eu possa fazer em 1997 para me impedir de usar o Oracle em 2012?

ATUALIZAR

Apenas uma atualização rápida. Eu copiei OraOps11w.dll na minha pasta de saída e removi todas as alterações no arquivo web.config que eu adicionei anteriormente.

Agora recebo o seguinte erro, que estou pesquisando.

Não foi possível carregar o arquivo ou assembly 'Oracle.DataAccess' ou uma de suas dependências. Foi feita uma tentativa de carregar um programa com um formato incorreto.

Alguns outros fóruns falam sobre o registro de Oracle.DataAccess.dll no GAC, o que eu estou ansioso para evitar - e eu não posso ver qual seria a diferença de qualquer maneira, mas eu vou dar uma chance.

ATUALIZAÇÃO 2

Registrar a biblioteca Oracle.DataAccess.dll no GAC não fez nenhuma diferença e cancelei o registro.

O fim da semana de trabalho está chegando e eu tenho que pegar um trem, mas eu enviei um e-mail para outro time de desenvolvimento aqui e espero que eles tenham lutado nessa batalha antes (e não usado extratos noturnos como todos os outros).

ATUALIZAÇÃO 3

Esta manhã eu baixei e configurei o IIS Express 8.0 RC que tem uma versão de 64 bits. A versão de 64 bits não é suportada pelo VS2010, portanto, precisa ser executada a partir da linha de comando. Isso foi bastante simples, olhando no Gerenciador de Tarefas, eu era capaz de ver o que a linha de comando usa VS para iisexpress.exe * 32.

Infelizmente eu recebo este erro ao navegar para o meu site hospedado pelo IIS Express de 64 bits.

O manipulador "ExtensionlessUrl-Integrated-4.0" possui um módulo incorreto "ManagedPipelineHandler" em sua lista de módulos

Este é um problema muito abaixo dessa linha de consulta, então vou tentar usar a versão de 32 bits do ODP.NET.

ATUALIZAÇÃO 4

Eu baixei a instalação completa da versão de 32 bits, mas fiquei com medo quando vi o Oracle Universal Installer. Parece também anos 90 para confiar na minha preciosa caixa de dev. Então, estou usando o cliente XCopy de 32 bits, isso me permite abrir a página inicial do meu site, então as referências estão funcionando. Obrigado por aqueles que sugeriram um problema de incompatibilidade de arquitetura 32/64.

Agora estou investigando esse erro ao instanciar um novo OracleConnection.

O provedor não é compatível com a versão do cliente Oracle

ATUALIZAÇÃO 5 Eu acho que fiz isso.

Então, baixei o "Instant Client", o mais recente dos 11 bits de 32 bits, e coloquei-o na pasta \ Dependencies para a base de código do trunk da solução. Eu adicionei esta pasta para a variável de ambiente do sistema% PATH% e também lancei o arquivo OraOps11w.dll lá.

Finalmente, _oracleConnection = new OracleConnection (connectionString) não lança! Agora eu preciso ter certeza de que eu tenho uma garrafa de Laphroaig na mesa quando eu for para implantar.

Então, para recapitular, para o IIS Express 7.5 (que é um processo de 32 bits) no Windows 7, 64:

Faça o download e extraia o "Instant Client" de 32 bits do 11g para alguma pasta e adicione esse local ao seu PATH. Oci.dll é a principal biblioteca não gerenciada do lado do cliente do Oracle.

Baixe e extraia o ODP.NET de 32 bits para alguma pasta.

Copie o OraOps11w.dll para a pasta principal em que reside o Instant Client (acima).

Adicione uma variável de ambiente TNS_ADMIN apontando para uma pasta na qual o arquivo de texto TNSNames.ora reside. É como um arquivo de hosts e mapeia nomes de serviço do Oracle para nomes de host do servidor.

Feche e reabra o Visual Studio para garantir que você escolha as novas variáveis ​​de ambiente e adicione uma referência ao assembly gerenciado do Oracle.DataAccess.dll na sua pasta ODP.NET.

Isso deveria ser isso. Soa bastante simples quando você sabe como.

ATUALIZAÇÃO 5.1

Investigando o erro abaixo, que eu originalmente não relatei desde que eu tinha certeza de que era um problema de firewall. A empresa em que estou tem dois em cada estação de trabalho, mas acabei de abrir um soquete bruto para o servidor Oracle, portanto, não pode ser.

ORA-12541: TNS: nenhum ouvinte

questionAnswers(5)

yourAnswerToTheQuestion