我有一個.NET COM程序集,我試圖部署到Web服務器(IIS 6 Win 2003)。我們已經成功地將此程序集部署到了我們的測試環境,但生產環境無法正常工作。部署.NET COM DLL,出現錯誤(0x80070002)
從傳統的ASP頁面調用程序集。每當頁面嘗試用「Set LTMRender = CreateObject("LTMRender.Render")
」初始化程序集時,都會收到錯誤「Error Type:, (0x80070002)
」。
此錯誤似乎表明權限被拒絕,或文件未找到類型問題。
我創建了一個測試應用程序,以查看程序集是否在網頁之外工作。 .exe初始化程序集,然後進行設計爲失敗的調用,從而導致程序集生成日誌文件。如果我在與程序集相同的文件夾中運行.exe,但是如果我在別處運行它,則會失敗。
出於某種原因,程序集不能從外部文件夾訪問。
我不明白爲什麼這不起作用。我已經確認的事情:
- 部署文件夾具有足夠的權限。
- 我們已確認安裝的程序集文件夾具有所有必要用戶帳戶的正確權限。
- 程序集使用強名稱進行簽名,並使用regasm.exe C:_WebSites \ LTMRender \ LTMRender.dll/codebase /tlb:C:_WebSites\LTMRender\LTMRender.tlb進行了註冊。 Regasm報告成功。
- 程序集具有正確的屬性和相關的GUID集。
任何提示?
編輯
我們跑的Filemon對我testapp.exe,它似乎已經表明問題是什麼。當testapp.exe在D:_websites \ DocWebV2 \或D:_websites \ DocWebV2 \ LTMRender \文件夾中運行時,它會成功並且filemon顯示爲D:_websites \ DocWebV2 \ LTMRender \ pinPDF.dll SUCCESS
如果我運行testapp .exe在D:_websites \ DocWebV2 \客戶端 - 我的asp頁面運行,它顯示D:_websites \ DocWebV2 \ pinPDF.dll名稱未找到,然後D:_websites \ DocWebV2 \ pinPDF \ pinPDF.dll文件未找到
我不知道爲什麼它不在正確的文件夾中,如果它只在這個特定的文件夾下。
您的分析聽起來目前爲止 - 看起來像是文件系統權限問題。我建議你使用procmon或filemon(免費sysinternals工具)來跟蹤權限的問題。從外部目錄運行測試應用程序。您將能夠清楚地看到文件系統權限失敗。 – Cheeso 2010-03-23 15:11:02