2013-03-19 29 views
6

Trong khi cố gắng để kết nối với cơ sở dữ liệu oracle từ .net nhận được ngoại lệ sau đây:Cố gắng để tải thư viện khách hàng Oracle ném BadImageFormatException

Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed.

Sau khi đi qua nhiều liên kết tôi đã cố gắng để vượt qua những ngoại lệ này bằng cách thay đổi nền tảng mục tiêu để Bất kỳ CPU.Since nó được ứng dụng WPF, sau khi thay đổi mục tiêu nền tảng nó được ném ngoại lệ sau đây:

'The invocation of the constructor on type 'SSC_GIP_UI.MainWindow' that matches the specified binding constraints threw an exception.' Line number '3' and line position '9'.

Nhưng nó chạy tốt với mục tiêu nền tảng x86 mà không ném ngoại lệ trên, nhưng nó ném BadImageFormatException.

Các enironment mà tôi đang làm việc là: Windows server 2008,
.net framework 4.0, oracle 11g (64-bit)

có thể bất cứ ai nói me.how để sửa chữa nó?

Trả lời

6

Lỗi này cho biết rằng bạn có sự không khớp giữa các thành phần 32 bit và 64 bit trong ứng dụng của mình.

Khi bạn chạy một ứng dụng trong 64 bit Windows, nó có thể chạy dưới dạng 64 bit hoặc 32 bit. Nếu bạn đã đặt mục tiêu nền tảng là x86, nó sẽ chạy dưới dạng 32 bit. Nếu bạn đã thiết lập mục tiêu nền tảng của bạn là x64 hoặc AnyCpu nó sẽ chạy như 64 bit.

Oracle có các phiên bản khác nhau của ứng dụng khách, một là 32 bit và phiên bản còn lại là 64 bit. Vì vậy, nếu ứng dụng của bạn đang chạy ở chế độ 32 bit, bạn cần phải chắc chắn rằng máy khách Oracle 32 bit của bạn đã được cài đặt.

5

Tôi nghĩ có lẽ bạn phải: Mở IIS, tìm ứng dụng hồ bơi ứng dụng này sử dụng Đến rằng hồ sơ, thiết lập một dấu ấn trong 'Enable các ứng dụng 32-bit'

+0

Cảm ơn. Không có gì lạ khi tôi KHÔNG làm việc thông qua ứng dụng web, nhưng làm việc bình thường thông qua các ứng dụng win32. –

0

Một giải pháp hoàn toàn thay thế sẽ được để sử dụng số Oracle Data Provider for .NET sẽ cho phép bạn truy cập vào tệp DLL Oracle.ManagedDataAccess hoạt động bất kể bạn đang sử dụng 32 hay 64 bit. Đọc this article from Oracle Magazine để có phần giới thiệu nhẹ nhàng.

Bạn có thể sử dụng nó khá nhiều giống như cách System.Data.OracleClient mặc dù tôi không chắc chắn nếu có tính năng chẵn lẻ giữa hai, vì vậy số dặm của bạn có thể thay đổi.

Các vấn đề liên quan