Câu trả lời ngắn gọn:
Lưu ý:Tôi đã cố gắng cài đặt ODP.NET mới trên máy khách trước đó và có thể kết nối với cơ sở dữ liệu bằng cách sử dụng chuỗi kết nối sau ...
Điều này cho thấy rằng cài đặt mới của bạn không có tnsnames.ora và sqlnet.ora trong / Network / Admin. Nếu bạn đồng ý với ứng dụng cũ khi sử dụng cài đặt ODP.net mới, bạn có thể sao chép chúng từ cài đặt cũ hoặc bạn có thể chỉ định vị trí chung cho tất cả các phiên bản bằng biến môi trường TNS_ADMIN, tức là TNS_ADMIN=C:\MyOracleFilesDir
Câu trả lời dài:
Khi bạn cài đặt ứng dụng khách mới, rất có thể nó cũng đã cài đặt các tệp chính sách của nhà xuất bản vào GAC chuyển hướng các tham chiếu đến Oracle.DataAccess.dll cũ sang phiên bản mới trong quá trình phân giải lắp ráp. Oracle.DataAccess sau đó định vị máy khách thông qua một tham số (DllPath) trong sổ đăng ký. Bạn có thể ghi đè vị trí này bằng cách đặt dllPath trong tệp .config của mình:
<configuration>
<oracle.dataaccess.client>
<add key="DllPath" value="C:\yourotherpath"/>
</oracle.dataaccess.client>
</configuration>
Đây thường là những gì tôi làm, nhưng khi tôi hiểu điều này nhiều hơn, tôi nhận ra rằng tôi đang ép một dll mới hơn chống lại một khách hàng cũ hơn. Nếu mục tiêu của bạn là không tác động đến ứng dụng khách cũ, thì tùy chọn tốt hơn có thể là xóa các chính sách của nhà xuất bản khỏi GAC (tôi không nghĩ rằng chúng thậm chí còn được cài đặt với bản cài đặt ODAC đầy đủ, chỉ ODP.net):
Nếu bạn cần cài đặt lại chúng, chúng thường được tìm thấy tại oraclepath \ odp.net \ PublisherPolicy.
Một tùy chọn khác và có thể tốt hơn trong dài hạn là định cấu hình các ứng dụng khách cũ để bỏ qua chính sách của nhà xuất bản:http://msdn.microsoft.com/en-us/library/cf9025zt%28v=vs.80%29.aspx
Cuối cùng, tôi khá chắc chắn rằng các thành phần .net cho khung 2.0 so với 4.0 là các tùy chọn cài đặt riêng biệt trong quá trình cài đặt ODP.net. Tôi nghĩ rằng bạn có thể tránh được vấn đề này chỉ bằng cách không cài đặt các thành phần 2.0. Trên lưu ý đó, bạn có thể thực hiện công việc tương tự bằng cách phát triển dự án mới của mình dựa trên odp.net 64 bit. Giống như v2.0 và v4.0, 32 bit và 64 bit cũng không có bất kỳ nhận thức nào về nhau.