2012-07-07 32 views
5

Tôi đã tạo một dll trong Visual Studios 2010. Tôi đã thực hiện các bước sau:ASP và COM DLL cổ điển Không hoạt động trong Server 2008 R2 (Microsoft VBScript runtime error '800a01ad' ActiveX thành phần không thể tạo đối tượng)

  1. với xây dựng một tên mạnh bằng cách kết hợp một cặp khóa (snk tập tin) để nó

  2. với mỗi lớp một ProgID cá nhân và GUID

  3. Vì nó là một chút DLL 64 tôi chắc chắn rằng Sử dụng RegAsm.exe nằm trong 'FrameWork64/thư mục v4xxxx '. Tôi đã từng regasm.exe/codebase ECE2.dll

  4. Tôi chạy 'gacutil -i' trên DLL

Tất cả những bước đã thành công. Các DLL và trang ASP tôi đang sử dụng nó trên được lưu trữ trong intetpub/wwwroot.

Bây giờ, DLL hoạt động tốt trên máy tính xách tay và máy tính ở nhà (cả hai đều chạy Windows 7 Ultimate). Tôi hiện đang cố gắng làm cho nó hoạt động trên Windows Server 2008 R2. Đây là nơi tôi đang gặp sự cố.

Tôi hoàn thành các bước tương tự như trên, tất cả đều thành công. Tuy nhiên khi tôi chạy trang ASP, tôi nhận được một thông báo lỗi đó sẽ đề nghị nó đã không được đăng ký, mặc dù nó có:

Microsoft VBScript runtime error '800a01ad' thành phần ActiveX không thể tạo đối tượng : 'ECE2.CSV_DataSet'

Tôi nghĩ rằng đó có thể là cài đặt trong IIS cần thay đổi. Lưu ý rằng máy chủ này đã được cấu hình để cho phép các trang ASP cổ điển, vì vậy tôi biết nó không phải là điều đó. Bất cứ ai cũng có thể cho tôi biết liệu có một thiết lập cụ thể nào tôi cần thay đổi trong Server hay không, hoặc có thêm hoops bảo mật nào không, tôi phải nhảy qua để làm việc trên Server 2008 mà tôi không cần phải làm Windows 7 Ultimate?

+1

Tạo thư mục ứng dụng bên dưới trang web, đặt asp vào thư mục đó, đảm bảo rằng thư mục ứng dụng đang chạy với tư cách quản trị viên (không phải là người dùng iis thông thường), điều đó có hữu ích không? - nó có thể là một vấn đề an ninh – Paul

Trả lời

7

Kiểm tra cài đặt nâng cao của hồ bơi ứng dụng mà ứng dụng ASP này chạy. Liệu ứng dụng "Bật ứng dụng 32 bit" có được đặt thành True hay không. Nếu vậy thì thats vấn đề của bạn, bạn không thể nhanh chóng một dll 64 bit dưới một hồ bơi 32 bit.

Có lý do nào mà bạn coi đây là "dll 64bit" thay vì "CPU bất kỳ" đơn giản không? Nếu không regasm nó cũng để sử dụng như là một dll 32 bit.

Nếu không, bạn sẽ cần phải chạy ứng dụng ASP này mà không cần "Kích hoạt ứng dụng 32-bit" để nó chạy như 64 bit nhưng sau đó có lẽ một lý do được đặt ở vị trí đầu tiên. Vì vậy, bước tiếp theo là tạo một hồ bơi ứng dụng mới không có cài đặt này và thực hiện một phần ASP của bạn dưới dạng ứng dụng riêng biệt trong nhóm này.

+1

tôi chỉ mất 3 giờ cố gắng tìm ra điều này. Rằng bạn SO nhiều cho câu trả lời của bạn. Cài đặt này hoạt động - nó cho phép một trang web cũ để chạy ASP lớp với một thành phần ActiveX 32 bit. – carrabino