我有一個用.NET C#編寫的調用COM組件的Windows服務。我也有一個.NET Windows窗體測試應用程序,我正在使用它來測試COM組件。它從測試應用程序正常工作。但是,當我在Windows服務中使用相同的代碼時,什麼都不會發生。 COM組件將所有內容記錄到文件中,而日誌文件不會生成的事實表明COM組件甚至沒有被調用。從.NET Windows服務調用COM組件
爲什麼這項工作從我的測試應用程序,但不是在Windows服務?
我有一個用.NET C#編寫的調用COM組件的Windows服務。我也有一個.NET Windows窗體測試應用程序,我正在使用它來測試COM組件。它從測試應用程序正常工作。但是,當我在Windows服務中使用相同的代碼時,什麼都不會發生。 COM組件將所有內容記錄到文件中,而日誌文件不會生成的事實表明COM組件甚至沒有被調用。從.NET Windows服務調用COM組件
爲什麼這項工作從我的測試應用程序,但不是在Windows服務?
服務通常與桌面獨立運行,因此在從服務調用時,對COM組件的調用與UI隔離。您可能allow a service to "interactWithDesktop「看到使用交互式服務上部分。
微軟(<sarcasm>in their infinite wisdom</sarcasm>
)決定,這種能力會從窗口Vista中移除,並建議separating your application into multiple parts and using other mechanisms你的UI和服務之間實現通信。顯然,有些(包括我自己在內)不同意,但是,這是它是什麼......
http://msdn.microsoft.com/en-us/library/ms683502.aspx
http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/e50d8819-d628-48e2-aa2c-6ac6de8380d9/
你運行你的SERV LocalSystem帳戶中的冰點(Windows服務的默認值)?您的COM組件可能需要訪問可正常運行的帳戶中可用的資源...
嘗試編輯您的服務並在Log On tab上指定您的帳戶。
請詳細介紹COM組件。例如,它寫的是什麼。也許該組件假定它正在運行具有消息泵的進程。 –
該組件是用Visual Studio 6編寫的ATL。它是一個exe組件(不是DLL或服務) – Jonnster
因此,這是您第一次嘗試在桌面應用程序之外使用該組件嗎?從未在ASP.NET或Web服務中使用它?這表明您對消息泵或桌面應用程序之外不存在的其他東西有依賴性。 –