我有一个.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