2012-04-25 27 views
5

Tôi có một Dịch vụ Windows mà tôi đang tạo và tôi tự hỏi những tùy chọn nào có sẵn để tôi cho phép các nhà phát triển định cấu hình dịch vụ.Cho phép Dịch vụ Windows được cấu hình

Dịch vụ này là một phần của một dự án nguồn mở lớn hơn tất cả và do đó dịch vụ sẽ được cài đặt trên nhiều máy khác nhau.

Thông thường tôi sẽ sử dụng một web/app.config cho điều này nhưng tôi không chắc chắn nếu điều này là có thể.

Do đó, tôi đang tìm cách để người khác xử lý trường hợp này.

Trả lời

6

bạn làm như bạn mong đợi. Bạn sử dụng app.config, tên này sẽ được đổi tên thành <exeName>.config khi dự án được xây dựng và sau đó <exeName>.config sẽ được dịch vụ gọi là <exeName> đọc.

Cài đặt được áp dụng theo cách được phân lớp và có thể đến từ các tệp cấu hình khác trên máy, chẳng hạn như machine.config. Bạn có thể đọc về how configuration is handled on MSDN

EDIT

Đáp lại bình luận: Một dịch vụ sẽ chỉ đọc cấu hình khi nó bắt đầu (vì lý do Perf). Nếu bạn muốn tải lại tập tin cấu hình sau này, bạn cần phải tự mình xử lý nó.

Bạn có thể đọc ngày/giờ sửa đổi cuối cùng của tệp cấu hình để xác định xem tệp đã bị thay đổi hay thiết lập file system watcher và sau đó yêu cầu trình quản lý cấu hình tải lại phần đó lần nữa vào lần tiếp theo được đọc, bằng cách gọi ConfigurationManager.RefreshSection("appSettings") và phần đó sẽ được tải lại từ đĩa khi bạn truy cập tiếp theo. Xem ConfigurationManager MSDN docs

+0

đồng ý với app.config, dù sao đi nữa, bản thân tôi tạo tất cả máy chủ lưu trữ WCF của tôi với Dịch vụ Windows và app.config liên quan – rhapsodyn

+1

Tôi cũng đang nghĩ đến việc sử dụng tệp cấu hình, nhưng tôi có câu hỏi phụ, khi dịch vụ đang chạy, bạn có thể sửa đổi các tập tin cấu hình và các thiết lập mới sẽ được nạp vào dịch vụ, hoặc nó phải được dừng lại/bắt đầu để đọc các thiết lập mới? ví dụ: chuỗi kết nối. – harag

+0

@harag Tôi đã cập nhật câu trả lời để đưa câu trả lời vào nhận xét của bạn, nhưng thực sự bạn chỉ nên đặt câu hỏi của riêng mình –

4

Bạn chỉ có thể sử dụng tệp .config có cùng tên với dịch vụ exe.

Nếu dịch vụ của bạn chạy dưới dạng MyService.exe, tệp cấu hình của nó sẽ là MyService.exe.config.

Trong Visual Studio, chỉ cần thêm tệp Cấu hình ứng dụng. Thao tác này sẽ thêm tệp app.config vào dự án.

Sau đó, bạn có thể truy cập những thứ như AppSettings và ConnectionStrings sử dụng lớp ConfigurationManager, giống như bạn làm với các ứng dụng ASP.Net.

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