Khi cài đặt Windows Service bằng InstallUtil, có thể bạn sẽ gặp lỗi sau:
Copyright (c) Microsoft Corporation. All rights reserved.
Exception occurred while initializing the installation:
System.IO.FileLoadException: Could not load file or assembly 'file:///D:\xxx\YourService.exe' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515).code-box
Nguyên nhân
- Thật ra có nhiều nguyên nhân dẫn đến thông báo lỗi này, ví dụ như:
- Đường dẫn đến tập tin exe của bạn không đúng.
- Service của bạn build không đúng với phiên bản của InstallUtil (64 bit hoặc 32 bit).
- Máy của bạn chưa cài đúng phiên bản .NET framework mà service cần. Hoặc máy bạn chưa cài các thư viện cần thiết mà service cần.
- Tập tin exe của bạn đang bị đánh dấu là block bởi Windows.
- Các nguyên nhân khác
Cách khắc phục
Kiểm tra lại đường dẫn
Bạn kiểm tra lại đường dẫn đến tập tin đã đúng chưa? Đảm bảo rằng đường dẫn được đặt trong dấu ngoặc kép (").
Ví dụ, câu lệnh hợp lệ như sau:
Kiểm tra lại phiên bản InstallUtil và service của bạn
Nếu service của bạn được build với dạng 32 bit thì bạn cài đặt nó bằng InstallUtil trong thư mục Framework. Ngược lại, nếu service của bạn build dưới dạng 64 bit thì hãy cài đặt nó bằng InstallUtil trong thư mục Framework64.
Kiểm tra lại .Net framework và thư viện
Kiểm tra trong Visual Studio rằng service của bạn đang sử dụng phiên bản nào của .Net framework. Cách thực hiện như sau:
Tại cửa sổ Solution Explorer, chuột phải vào solution, chọn Properties:
Như trên thì service mình đang dùng .NET framework 4.5 nên cần đảm bảo rằng server cũng được cài phiên bản này.
Ngoài ra, bạn cũng cần chắc chắn rằng server cũng được cài những thư viện cần thiết mà service bạn cần nhé.
Unlock tập tin exe
Chuột phải vào tập tin exe của bạn, chọn Properties.
Tick vào Unblock, và nhấn nút Apply → OK.
Xem log của Windows
Để tìm hiểu các nguyên nhân khác, bạn có thể xem log qua Event Viewer của Windows để tìm hiểu nguyên nhân lỗi.
Để mở Event Viewer, bạn có thể tìm kiếm qua Start Menu hoặc chạy eventvwr thông qua CMD. Giao diện Event Viewer có dạng như sau:
Đăng nhận xét