2013-08-22 71 views
1

我正在使用.NET平臺構建Windows服務。該服務旨在運行在多個客戶端,每個客戶端的每個實例。每個服務實例將在單獨的數據庫上工作。所有服務實例都將位於單個服務器上。。具有靈活文件名的.net服務

最近,客戶(託管運行服務的服務器)詢問他何時在Windows任務管理器中查看服務時,他無法分辨哪個服務可執行文件是針對哪個客戶的。因此,他取消了服務註冊,製作了多個服務exe副本,然後重新命名它們,例如在文件名中附加客戶名稱。然後他註冊了該服務。但是,當他試圖運行服務,他開始得到

服務無法啓動。 System.IO.FileNotFoundException:無法加載文件或程序集「AService,Version = 2013.0.0.1004,Culture = neutral,PublicKeyToken = 4a70863d203e0028」或其某個依賴項。該系統找不到指定的文件。

我花了幾天找到一個解決方案,但不能。有人可以幫助我嗎?即使.NET允許重命名這樣的程序集?

+0

重命名EXE應該可以正常工作。您的客戶是如何註冊新服務的? – zmbq

回答

0

嘗試
在運行時重命名調用名稱未找到組裝,
適用於所有參考!
http://support.microsoft.com/kb/837908/en-us

方法3

+0

感謝您的回覆。所有這些方法都在討論引用的assmeblies而不是正在執行的程序集。在我的情況下執行組件的文件名不同於程序集名稱。不幸的是,這個名字在構建後發生了變化。 – Tahir

0

的問題是完全不同的,然後我問。我的錯。該服務根據客戶動態加載程序集。動態加載邏輯取自Loading Assemblies from Anywhere into a New AppDomain。顯然,FileNotFoundException是因爲這個而發生的。當服務exe文件未被重命名時,動態加載工作。