2010-09-15 52 views
12

Dịch vụ cửa sổ tự động khởi động của tôi không thể khởi động chỉ khi khởi động lại. Tôi có một dịch vụ windows được tạo trong C# và được cài đặt thông qua trình cài đặt được tạo Wix. Dịch vụ được thiết lập để bắt đầu tự động. Dịch vụ này được cài đặt và chạy dưới NT AUTHORITY \ NETWORK SERVICE. Khi dịch vụ được bắt đầu, trước tiên dịch vụ này thực hiện cuộc gọi dịch vụ web bên ngoài.Dịch vụ Windows sẽ không tự động khởi động sau khi khởi động lại

Trong Windows 7 tôi có thể đặt dịch vụ thành Tự động - Trì hoãn bắt đầu và dịch vụ sẽ bắt đầu khi khởi động lại không có vấn đề gì. Tuy nhiên, tùy chọn này không có sẵn trong Windows XP, và khi thiết lập để bắt đầu tự động, các dịch vụ không do

A timeout was reached (30000 milliseconds) while waiting for the MyService service to connect.

Nếu tôi cố gắng để bắt đầu bằng tay sau khi quá trình đăng nhập, dịch vụ khởi động tốt, nó là chỉ khi dịch vụ cố gắng tự động khởi động lại khi có sự cố, hãy dẫn tôi tin rằng có các dịch vụ phụ thuộc mà tôi cần thêm vào dịch vụ của mình để dịch vụ bắt đầu chính xác.

Có ai có thể chỉ cho tôi các phụ thuộc chính xác hoặc cách tiếp cận thay thế không?

Trả lời

11

Bạn có thể có điều kiện chủng tộc với sự phụ thuộc. Bạn có thể vá xung quanh điều này bằng cách cấu hình dịch vụ của bạn để phụ thuộc vào dịch vụ khác (nói tcp/ip) nhưng những gì tôi thực sự làm là viết lại dịch vụ của bạn để không cần thực hiện cuộc gọi này trong quá trình thực thi. Thay vào đó, nó nên cố gắng định kỳ để thực hiện cuộc gọi webservice tại một thời điểm sau đó và ghi lại các thông điệp hữu ích hoặc gửi tin nhắn đến tiện ích thanh tác vụ hoặc tương tự nếu có vấn đề cần giải quyết.

+0

Tôi đã nghĩ đến việc thực hiện cả hai. Vấn đề là cuộc gọi được thực hiện để truy xuất các cài đặt cấu hình từ xa và do đó được cài đặt trong Cài đặt dưới dạng phần mở rộng của SettingsProvider. –

+1

Xin lỗi, nhưng nó cần phải được thực hiện. Thiết kế cơ bản là mong manh nhất. Web là không trạng thái và giả định rằng nó là bất cứ điều gì khác là sai. –

+1

Tôi lấy lời khuyên của bạn và làm cho phương thức OnStart() của tôi làm chức năng tối thiểu và bắt đầu một Timer thực hiện sau đó để kéo xuống các thiết lập cấu hình và khởi tạo chức năng dịch vụ. –

0

Tôi gặp sự cố tương tự trên 4 máy chủ mới. Tôi thiết lập dịch vụ W32 để trì hoãn tự động và nó giải quyết được vấn đề.

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