2009-12-18 36 views
9

Tôi có dịch vụ WCF được lưu trữ trong dịch vụ Windows mà tôi đặt thành Tự động để nó sẽ tự động khởi động khi máy chủ được khởi động. Dịch vụ là điểm cuối được MSMQ hỗ trợ.MSMQ hỗ trợ dịch vụ WCF được lưu trữ trong dịch vụ windows không thành công khi khởi động

Khi tôi khởi động dịch vụ theo cách thủ công, mọi thứ đều tốt. Nhưng khi dịch vụ bắt đầu khi khởi động, tôi nhận được ngoại lệ MSMQ:

System.TypeInitializationException: The type initializer for 
'System.ServiceModel.Channels.Msmq' threw an exception. ---> 
System.ServiceModel.MsmqException: The version check failed with the error: 
'The Message Queuing service is not available (-1072824309, 0xc00e000b)'. The 
version of MSMQ cannot be detected All operations that are on the queued channel 
will fail. Ensure that MSMQ is installed and is available. 
    at System.ServiceModel.Channels.MsmqQueue.GetMsmqInformation 
        (Version& version, Boolean& activeDirectoryEnabled) 
    at System.ServiceModel.Channels.Msmq..cctor() 
    --- End of inner exception stack trace --- 

Có vẻ như MSMQ chưa sẵn sàng sử dụng trước khi bắt đầu dịch vụ ... có giải pháp cho vấn đề này không?

Trả lời

7

Bạn cần thêm phụ thuộc vào MSMQ trong máy chủ dịch vụ WCF của mình. Bạn có thể làm điều này trong bộ cài đặt dịch vụ:

ServiceInstaller serviceInstaller = new ServiceInstaller(); 
// Adding this property to your ServiceInstaller forces 
// your service to start after MSMQ. 
serviceInstaller.ServicesDependedOn = new string[] { "MSMQ" }; 

Nếu bạn không sử dụng một trình cài đặt dịch vụ, bạn cũng có thể thêm các phụ thuộc MSMQ cho dịch vụ của bạn bằng cách chỉnh sửa registry của Windows, như mô tả trong "Microsoft Support: How to delay loading of specific services".

+0

cảm ơn! google'ing rằng thông báo ngoại lệ tỏ ra vô nghĩa! – puffpio

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