【发布时间】:2010-11-19 20:16:13
【问题描述】:
我遇到了与在运行 IIS7 的 64 位 Windows Server 2008 服务器上从经典 asp 应用程序执行 .Net dll 相关的问题。情况如下:
我编写了一个 .Net C# 程序集来执行一些加密任务。通过从 ServicedComponent 继承,此程序集可用于经典 ASP 环境,确保 assemblyinfo 文件具有 ComVisible(true) 属性,并且已使用“regsvcs”命令行进行安装。
在我自己的桌面(运行 IIS6 的 XP)上进行测试时,一切正常。当迁移到 IIS 7、Windows Server 2008 时,我得到了臭名昭著的“ASP 0177 Server.CreateObject failed”。
我尝试了以下方法无济于事:
- 确保在服务器上安装了 ASP 和脚本扩展功能,因为这不是 IIS7 的默认设置。这使我可以执行简单的 ASP 命令,但不能执行 .net 程序集的 server.createobject。
- 为支持经典 asp 站点的应用程序池启用 32 位应用程序支持
- 使用 NetworkService 作为支持经典 asp 站点的应用程序池的标识
- 尝试使用 regsvr32 注册 dll,但失败
- 我可以创建其他对象,例如“scripting.filesystemobject”
- 将 dll 移动到 wow64 目录,然后使用 regsvcs 注册它们。
- 是的,当我执行 regsvcs 命令时,它们是从使用“RunAs”管理员启动的命令行中执行的。 regsvcs 命令已成功注册 来自 64 位和 32 位版本。但是,当从经典的 asp 应用程序中使用时,它会失败。
这个问题与this one密切相关。但是,我认为这个问题与在服务器上使用工具更相关,而不是与我的类似的程序问题。
还有人想尝试更多的想法吗?
【问题讨论】:
-
降级到 Windows 2003?听起来你真的不需要 2008。
-
不幸的是,对于这种情况,我没有降级到 Windows 2003 的选项。当我们将经典的 asp 应用程序迁移到 .Net 时,大部分网站都将在 .Net 中构建。所以,我认为我们必须弄清楚这个问题:(
标签: iis-7 asp-classic 64-bit