我有一個程序集DLL,可以連接到ActiveMQ代理。使用NUnit中的DLL可以正常工作,並且可以從控制檯應用程序使用它。問題是從Windows服務中使用它。與代理的連接總是失敗,就好像服務沒有可用的外部連接一樣。即使繞過SCM並在Visual Studio中運行代碼也會失敗。有什麼特別的Windows服務項目需要做外部連接嗎?無法連接到Windows服務的外部服務
DLL中的失敗代碼是這樣的:
ConnectionFactory connectionFactory = new ConnectionFactory(connectURI);
connection = connectionFactory.CreateConnection(); // fails here
的connectURI是好的,因爲它工作在控制檯應用程序和測試。
我試過每一個提供的用戶,本地系統,本地服務,網絡服務,甚至管理員,他們都沒有工作。此外,它甚至不能在Visual Studio中進行調試。連接不認證。我使用log4net來捕獲異常,但它只是說:Apache.NMS.NMSConnectionException被捕獲並且「應用程序出錯」。我認爲在Visual Studio中調試也會導致它作爲登錄用戶運行,但這也不起作用。 – codebrane
在Visual Studio中進行調試不會使其以登錄用戶身份運行 - 它將按照配置爲在SCM中運行的那樣運行 - 調試程序會像您一樣運行並附加到該進程。 – bryanmac
嘗試配置爲以您的帳戶Inot NS,LS或管理員身份運行)。確保您選擇的帳戶是您在控制檯應用程序中以交互方式運行的帳戶。這將排除用戶成爲問題。 – bryanmac