2016-11-10 18 views
6

Tôi hiện đang phát triển dự án C# WebAPI tham chiếu đến tệp api dll của bên thứ ba. Thành phần này là một tham chiếu COM đơn giản mà tôi đã thêm vào dự án studio trực quan.
API web được xuất bản trên máy chủ mạng nội bộ (IIS) với bảo mật tích hợp & tính năng mạo danh người dùng được bật, tắt tính năng ẩn danh ẩn danh.COMException CreateInstance không thành công khi xuất bản

Khi chạy api web trong studio trực quan (2015) trên máy cục bộ của tôi, mọi thứ hoạt động hoàn hảo.

Khi chạy api web đăng tải trên máy chủ IIS của chúng tôi, tất cả mọi thứ cũng hoạt động tốt, tuy nhiên khi tôi gửi một yêu cầu đến một hành động điều khiển sử dụng thư viện của bên thứ ba, tôi nhận được lỗi sau:

System.Runtime.InteropServices.COMException
Additional information:
CreateInstance failed.
at ThirdPartyLib.Connect()

Các sự phụ thuộc của bên thứ ba đã được cài đặt trên máy chủ (cũng như máy dev của tôi) bằng trình cài đặt của họ. Điều này đã đăng ký một bộ dll và cài đặt phần mềm đi kèm. Tôi đã xác minh cài đặt chính xác. Trong thực tế, một ứng dụng winforms đơn giản sử dụng cùng một dll hoạt động tốt.

Trình theo dõi quá trình hiển thị w3wp.exe đang sử dụng dll chính xác.

Tôi không chắc mình đang thiếu gì?
Nếu đây là vấn đề về quyền, tôi sẽ giải quyết nó như thế nào?

+0

dự án có đủ quyền truy cập vào dll không? – Steve

+0

Tôi không biết cách tìm hiểu. UAC bị tắt. Đó là máy chủ mạng nội bộ sử dụng bảo mật tích hợp để tài khoản của tôi bị mạo danh khi tôi truy cập. – Bart

+0

"Cài đặt" có nghĩa là gì? Nó đã được đăng ký chưa? "Tôi có dự án API web C#" nghĩa là gì? Bạn có mã nguồn không? Làm thế nào để bạn gọi thành phần COM? Bạn đã thử cái gì? Bạn đã chạy Process Monitor để xem nơi nó cố gắng để tải các DLL từ? –

Trả lời

2

Bạn có thể thay đổi Hồ sơ ứng dụng cho người dùng có quyền cao hơn.

Lưu ý: Bạn có thể sử dụng ASP.NET Mạo danh sử dụng cấu hình web để chạy toàn bộ ứng dụng với một bản sắc cụ thể hoặc sử dụng mã để chạy chỉ là một phần của mã sử dụng một bản sắc riêng. Ví dụ: tôi đã kiểm tra <identity impersonate="true" userName="r.aghaei" password="mypassword"/> để có quyền đối với hệ thống tệp và nó hoạt động bình thường. Chỉ cần chú ý mạo danh trong webconfig hoặc trong mã, chỉ hoạt động nếu người dùng hồ bơi ứng dụng có đủ quyền để cho phép mạo danh. Để biết thêm thông tin về cách sử dụng cấu hình hoặc mã của trình duyệt mạo danh, hãy xem bài viết MSDN KB this.

Cũng đừng bỏ qua đặc quyền tối thiểu của đặc quyền.

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