ODP.NET Managed - 요청한 항목을 찾을 수 없습니다.넷 프레임워크 데이터 프로바이더
Visual Studio 2013을 사용하여 최신 버전의 ODP를 추가했습니다.NUget을 사용하여 프로젝트에 NET 관리됨:
Install-Package odp.net.managed
http://www.nuget.org/packages/odp.net.managed/121.1.2
이제 다음 코드를 실행하려고 하면 다음과 같습니다.
Database db = DatabaseFactory.CreateDatabase();
다음 예외가 발생합니다.
An exception of type 'System.ArgumentException' occurred
in System.Data.dll but was not handled in user code
Additional information: Unable to find the requested .Net
Framework Data Provider. It may not be installed.
다른 사용자의 유사한 문제를 읽은 후 관리 드라이버 섹션을 C:에 추가했습니다.\Windows\Microsoft.Net\Framework64\v4.0.30319\Config\machine.config:
<system.data>
<DbProviderFactories><add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>
하지만 그것은 아무런 영향도 없었습니다.
web.config에 지정된 연결 문자열이 있지만, 연결을 열기 전에 연결 문자열 형식이 실패하고 있기 때문에 확인할 수 없습니다.
<connectionStrings>
<add name="OneCDPBuild"
providerName="Oracle.ManagedDataAccess.Client"
connectionString="Data Source=database;user id=IDhere;pwd=passwordhere;" />
</connectionStrings>
웹 구성에 다음을 추가했습니다.
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client" />
<add name="ODP.NET, Managed Driver"
invariant="Oracle.ManagedDataAccess.Client"
description="Oracle Data Provider for .NET, Managed Driver"
type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>
ASP를 배포할 때 이 오류가 발생했습니다.64비트 버전의 ODAC 클라이언트 구성 요소가 설치된 64비트 서버에 EntityFramework 5를 사용하는 NET MVC 5 애플리케이션.
b_levitt의 조언에 따라 공장을 사용하지 않고 수동으로 연결을 열 수 있다는 것을 확인하여 ODAC를 설치하여 작업을 진행하였으나 공장 방식으로는 조립품의 위치를 파악할 수 없었습니다.
공개되지 않은 시간 동안 머리를 잡아당긴 끝에 32비트 버전의 machine.config 파일에 문제가 있음을 알게 되었습니다.NET 프레임워크.Oracle Provider의 항목이 포함되어 있지 않아 수동으로 이 파일에 다음 항목을 추가했습니다.
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
아래
<configuration>
<configSections>
다음 두 섹션 전체가 있는지 확인합니다.
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
<section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
framework64 폴더 아래의 machine.config 파일에서 정확한 항목을 가져올 수 있습니다.
그다음에 밑에
<system.data>
<DbProviderFactories>
공장 이름이 다음 두 개인지 확인합니다.
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
<add name="ODP.NET, Unmanaged Driver" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET, Unmanaged Driver" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
이 출품작들을 추가하고 나니 모든 것이 제게 도움이 되었습니다.
먼저 직접 테스트를 하고 공장의 방법을 피하는 것부터 시작하겠습니다.
var conn = new Oracle.ManagedDataAccess.Client.OracleConnection("your connection string");
conn.Open();
여기에 있는 모든 문제는 Oracle과 관련이 있습니다.빈 디렉터리에 ManagedDataAccess.dll이 없거나 연결 문자열로 인해 연결 문제가 발생합니다(다른 방법으로 이미 오라클 인스턴스에 연결할 수 있다고 가정).
공장의 경우, 일부 구식 엔터프라이즈 라이브러리 코드를 사용하는 것 같습니다.이후 버전의 프레임워크에서는 다음을 사용할 것으로 생각합니다.
var factory = DbProviderFactories.GetFactory("ODP.NET, Managed Driver");
var conn = factory.CreateConnection();
한 걸음 한 걸음 내딛으면 더 좋은 피드백을 받을 수 있을 거라고 생각합니다.
IIS Application Pool 구성을 로 변경하는 문제를 해결했습니다.
제가 설치한 ODAC는 for이고, 제 앱 풀은 앱을 에서 실행하고 있었기 때문에 예외를 받고 있었습니다.
언급URL : https://stackoverflow.com/questions/25389319/odp-net-managed-unable-to-find-requested-net-framework-data-provider
'programing' 카테고리의 다른 글
PHP에서 오브젝트를 캐스트하는 방법 (0) | 2023.09.27 |
---|---|
현재 로그인한 사용자를 제외한 모든 사용자를 수준 높은 웅변으로 가져옵니다. (0) | 2023.09.27 |
날짜에서 연도를 추출합니다. df['year'] = df['date'].연도가 작동하지 않습니다. (0) | 2023.09.17 |
탐색 드로어에서 메뉴 항목의 텍스트 색상 변경 (0) | 2023.09.17 |
XML Android 권한 목록 전체 (0) | 2023.09.17 |