【发布时间】:2010-03-24 23:24:35
【问题描述】:
我有一个 .NET COM 程序集,我正试图将其部署到 Web 服务器(IIS 6 Win 2003)。我们已成功将此程序集部署到我们的测试环境,但生产环境无法正常工作。
正在从经典 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 设置正确。
有什么建议吗?
编辑
我们对我的 testapp.exe 运行了 filemon,它似乎表明了问题所在。当 testapp.exe 在 D:_websites\DocWebV2\ 或 D:_websites\DocWebV2\ LTMRender\ 文件夹中运行时,它成功并且 filemon 显示 D:_websites\DocWebV2\LTMRender\pinPDF.dll SUCCESS
如果我在 D:_websites\DocWebV2\Client 中运行我的 testapp.exe – 我的 asp 页面在其中运行,它会显示 D:_websites\DocWebV2\pinPDF.dll NAME NOT FOUND 然后 D:_websites\DocWebV2\pinPDF\未找到 pinPDF.dll 文件
如果它仅在此特定文件夹下,我不确定为什么它没有在正确的文件夹中查找。
【问题讨论】:
-
到目前为止,您的分析听起来正确 - 看起来像是文件系统权限问题。我建议您使用 procmon 或 filemon(免费的 sysinternals 工具)来跟踪权限问题。从外部目录运行您的测试应用程序。您将能够清楚地看到文件系统权限失败。
标签: .net com assemblies