2012-05-29 28 views
6

Chúng tôi đã tạo một .Net hội và làm cho nó có thể truy cập như đối tượng COM. Khi chúng tôi đang cố gắng để lộ bất kỳ phương pháp của đối tượng này trong trang ASP chúng tôi nhận được một lỗi "80131509". Chúng tôi không nhận được bất kỳ lỗi nào khi chúng tôi đang khởi tạo Object. tức là Server.CreateObject đang đi qua.lỗi '80131509' trong ASP Trang

Điều này hoạt động tốt trong môi trường phát triển của chúng tôi nhưng chúng tôi gặp lỗi này trong môi trường UAT. Phát triển và UAT là gần như giống nhau, ngoại trừ UAT là an toàn hơn. Tôi đã thử mọi cách có thể nhưng không may mắn. Tôi đang làm việc về vấn đề này trong 4 ngày qua và mọi trợ giúp sẽ được đánh giá cao.

Tôi nghi ngờ có thể có một số vấn đề về quyền với IIS 7 khi hiển thị dll đó. Nhưng không chắc nó có thể là gì? Chúng tôi cũng đã trao toàn quyền cho IUSR.

Code:

set obj = Server.CreateObject("DataAccess") 
dim rs 
set rs=obj.GetLocations("All") <--- **Here i am getting an error.** 
+1

Dll đã được đăng ký trên máy chủ UAT, tức là, với 'regsvr32'? – mellamokb

+0

Xin lỗi tôi quên đề cập đến phần đó. Có dll được đăng ký trên máy chủ UAT sử dụng Regasm. – Bugreport

+0

Bạn đã đăng ký của mình chưa.NET lắp ráp cho cả hai 32-bit và 64-bit sử dụng? Tôi không biết nếu ASP cổ điển chạy như là quá trình 32-bit hoặc 64-bit (có lẽ dưới w3wp.exe). Lưu ý rằng đôi khi một cuộc gọi đến CreateObject có thể không âm thầm, bạn chỉ nhận được lỗi khi bạn cố gắng sử dụng đối tượng. Tôi khuyên bạn nên thử tạo một đối tượng .NET có khả năng phát triển của Microsoft để xem liệu hệ thống có hoạt động theo nguyên tắc hay không, trước khi tìm ra điều gì xảy ra với việc triển khai cụ thể của bạn. – Dai

Trả lời

2

Chúng tôi có một vài dll com tại nơi làm việc của tôi và chúng tôi thường chạy vào vấn đề mà chúng tôi đăng ký dll với regasm và dll không hoạt động. Nó hoạt động trong môi trường sống khác nhưng vì một lý do nào đó nó sẽ không hoạt động trong trường hợp này. Com dlls là fickle. Đôi khi chúng tôi sẽ đăng ký, hủy đăng ký, đăng ký lại và khởi động lại. Đôi khi họ bắt đầu làm việc bí ẩn lần khác.

Có một vài điều khác có thể xảy ra.

Đảm bảo rằng các quyền chính xác được đặt trên các thư mục dll sống trong và trên chính dll. Ngoài ra hãy chắc chắn rằng bất kỳ dll phụ thuộc có mặt và cũng có sự cho phép chính xác. Đảm bảo rằng mọi thứ mà dll cần truy cập cũng có quyền chính xác.

Nếu điều đó không mở được regedit. Tìm kiếm guid được liên kết với đối tượng com. Đôi khi bạn sẽ khám phá ra rằng các đường dẫn registry đã được trộn lẫn. Xóa mọi tham chiếu đến đối tượng com, khởi động lại và đăng ký lại nó.

Tôi cũng đã thấy một ngoại lệ bị ném vào hàm tạo gây ra sự cố. Khi đối tượng com khởi động nó sẽ thổi lên. Trong một đối tượng của chúng tôi đã thêm một phương thức để gửi email khi có ngoại lệ.

Trong một trường hợp, chúng tôi đã có một đối tượng com cũ không còn tương thích với phiên bản cửa sổ chúng tôi đang chạy. Nếu bạn đã nâng cấp máy chủ, điều đó có thể là vấn đề. Trong trường hợp của chúng tôi, chúng tôi đã viết thành phần của riêng mình để thay thế thành phần cũ bị hỏng.

Cũng đảm bảo rằng nếu đối tượng com được gõ mạnh mẽ rằng bạn sử dụng "regasm/TLB/codebase fickle_com_object.dll"

Nói tóm lại có một số điều mà gây ra đối tượng com để không làm việc:

  1. Nhiều đường dẫn trong registry
  2. điều khoản bảo mật sai trên thư mục
  3. Đâm khi được tạo ra

Có lẽ một trong những điều này sẽ giải quyết vấn đề của bạn. Tôi biết đôi khi nó khó khăn như thế nào. Chúc may mắn!

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