1,現象
我做了乙個windows服務,為了以後部署方便,將其中容易發生變動的流程,做成了乙個dll外掛程式a,然後在windows服務啟動的時候啟動載入。程式設計環境是在windows2003伺服器系統上,然後部署的系統是windows 2008 r2。我的服務啟動5秒鐘後就自動停止了,並且try...catch不到任何異常。
2,資料,以下來自微軟技術資源庫
,當 dll 或可執行程式的檔案映像無效時, badimageformatexception 引發異常。
相關提示
如果您的應用程式使用了 32 位元件,請確保該應用程式始終採用 32 位應用程式的執行方式。
如果應用程式專案的「平台目標」屬性設定為 anycpu,則編譯後的應用程式在 64 位或 32 位模式中均可執行。
如果採用 64 位應用程式執行方式,則實時 (jit) 編譯器便會生成 64 位本機**。
如果應用程式依賴於某個 32 位託管元件或非託管元件,則在 64 位模式中無法載入該元件。
若要糾正此問題,請將專案的「平台目標」屬性設定為 x86,然後重新編譯。
確保未使用利用其他 .net framework 版本建立的元件。
如果使用 .net framework 1.0 或 .net framework 1.1 開發的應用程式或元件嘗試載入使用 .net framework 2.0 sp1 或更高版本開發的程式集,或者使用 .net framework 2.0 sp1 或 .net framework 3.5 開發的應用程式嘗試載入使用 .net framework 4 開發的程式集,便會引發此異常。
badimageformatexception 異常可能會報告作為編譯時錯誤,或在執行時可能會引發該異常。
有關示例,請參見 badimageformatexception 類。
確保檔案映像是有效的託管程式集或模組。
當非託管動態鏈結庫或可執行檔案傳遞給 load 方法進行載入時會引發此異常。
有關更多資訊,visual basic 使用者可以參見互操作性疑難解答 (visual basic)。
3,解答
由於外掛程式a應用程式專案的「目標平台」屬性設定為 anycpu,在x64位模式中無法載入該元件,所以我將外掛程式a應用程式專案的「目標平台」設定為「x86」,然後停止服務,將重新生成的外掛程式a放到服務安裝目錄下,重新啟動程式,ok!
這裡改正一下,剛才我在上面寫的是x64,日誌裡記錄「試圖載入格式不正確的程式」!
windows 啟停Oracle服務
c net start oracleservicemyoracle oracleservicemyoracle 服務正在啟動 oracleservicemyoracle 服務已經啟動成功。在正常情況下,資料庫即可隨之啟動,如果資料庫不能啟動,則可以通過sysdba身份連線進入資料庫,手工mount並...
監控windows服務,當服務停止後自動重啟服務
近期花時間研究了一下windows和linux下某服務停了後自動重啟的功能,在網上收集了些資料,並經過測試,在此整理一下。這裡介紹的是windows服務的監控,是通過批處理來實現的。本例是監控windows的computer browser為例,每60秒檢測一次 可根據實際需要調整間隔 當發現服務停...
監控WINDOWS服務,當服務停止後自動重啟服務
監控windows的 automatic updates 為例,每60秒檢測一次 可根據實際需要調整間隔 當發現服務停止後自動重啟。新建乙個autostartservice.bat批處理檔案 內容如下 echo off rem 定義迴圈間隔時間和監測的服務 set secs 60 set srvna...