我有一個WCF服務,它使用實體框架連接到一個數據庫,所有託管在Windows服務中。問題是當處理第一條消息導致數據庫訪問時,會引發異常:「無法解析程序集'MyService.exe'」。基本上,當作爲Windows服務運行時,EF無法找到嵌入的資源。從Windows服務訪問EF資源的問題
我檢查了3個資源,csdl,ssdl,msl在靜態exe中使用.Net Reflector的存在,他們在那裏。我使用這個連接字符串
metadata=res:// MyService.exe/MyModel.csdl|
res:// MyService.exe/MyModel.ssdl|
res://MyService.exe/MyModel.msl; provider=...".
我添加代碼到Windows服務時,服務啓動枚舉嵌入的資源,在OnStart方法(使用GetExecutingAssembly()。GetManifestResourceNames()),它說明不了什麼那裏。 [當然,win svc是通過installutil + net start安裝/運行的]。當我運行一個幾乎完全相同的項目時,鏈接到所有相同的源代碼,包括app.config,作爲交互式控制檯應用程序(當然是不同的Main())),一切正常,包括枚舉資源(所有3個edmx映射文件在那兒)。 Win Svc在本地系統下運行。
在Windows服務中使用EF有其他人有困難嗎?任何有關什麼是錯誤的或如何診斷/修復它的想法?
我一直把實體框架在一個單獨的DLL,在這種情況下,我從來沒有遇到過的問題。這可能是一個權限問題嗎?您是否嘗試過向服務文件夾授予更多權限? – Mas 2011-06-06 15:49:49
我試過使用res:// */MyModel ...我也嘗試將3個文件從資源中拉出來,寫入文件並引用它們,這一切都無濟於事。 – 2011-06-25 11:28:42