Tôi đã gặp lỗi này khi triển khai ứng dụng ASP.NET MVC 5 bằng EntityFramework 5 tới máy chủ 64 bit của chúng tôi, trên đó đã cài đặt phiên bản 64 bit của các thành phần máy khách ODAC.
Tôi đã làm theo lời khuyên của b_levitt và xác nhận rằng kết nối có thể được mở theo cách thủ công mà không cần sử dụng các nhà máy, vì vậy ODAC đã được cài đặt và hoạt động, nhưng các phương pháp của nhà máy không thể xác định vị trí các cụm.
Sau khi nhổ tóc trong một khoảng thời gian không được tiết lộ, tôi phát hiện ra rằng vấn đề là với tệp machine.config cho phiên bản 32-bit của .NET framework. Nó không bao gồm các mục nhập cho các nhà cung cấp tiên tri, vì vậy tôi đã thêm các mục nhập sau vào tệp này theo cách thủ công:
C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ machine.config
Dưới
<configuration>
<configSections>
đảm bảo rằng bạn có hai yêu cầu phần sau:
<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" />
Bạn có thể lấy các mục nhập chính xác từ tệp machine.config của mình trong thư mục framework64.
Tiếp theo, trong
<system.data>
<DbProviderFactories>
đảm bảo rằng bạn có hai tên nhà máy sau:
<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" />
Sau khi thêm các mục này, mọi thứ đều hoạt động với tôi.