windows-7 - 32 位 Windows 和 IIS 7 中的 Server.CreateObject( ) 失败

标签 windows-7 com asp-classic createobject

Windows 7 32 位,IIS 7.5.760016385

我在 Visual Basic 6.0 中创建了一个 DLL,并尝试在经典 ASP 代码中使用它:

set obj = Server.CreateObject("a.b")

我收到以下错误:

006 ASP 0178
Server.CreateObject Access Error
The call to Server.CreateObject failed while checking permissions. Access is denied to this object.
err.number = -2147024891

我尝试创建 iusr_cmpname 用户并在此 ASP 页面的默认网站和虚拟目录中为其授予权限。我已经对 dll 进行了 REGSVR32 处理。

我已转到“打开和关闭 Windows 功能”并选择了 IIS/万维网服务/应用程序开发功能,然后选中了 ASP、ASP.net、ISAPI 扩展和 ISAPI 文件管理器。

我在不同的新闻组中跟踪了许多线索,但我可以解决这个问题。 我们去年、一年又 1/2 前尝试过这个,也遇到了同样的问题。由于我们无法解决这个问题,所以我们又回到了Windows NT。我们在 NT 上从来没有遇到过这个问题。

现在我们正在再次尝试克服这个问题,以便我们可以再次迁移到 Windows 7。似乎很多人都遇到了这个问题,但他们找到并发布的任何解决方案似乎都不是我需要的。

任何帮助将不胜感激。谢谢。

最佳答案

该问题似乎与 IIS 无法访问文件系统上您的自定义 VB6 Active X dll 有关。 我在与默认 Web 应用程序相同的目录中注册了一个我创建的自定义 dll,并且能够让 ASP 创建该对象。

这就是我所做的:

  • 全新安装 Windows 7 Professional 64 位 SP1。

  • 启用 Windows ASP 功能

  • 此步骤仅适用于 64 位 Windows - 使用 IIS 管理器,为默认应用程序池启用 32 位应用程序。

enable 32-bit application pool

  • 创建一个简单的 VB6 Active X dll(类名为“CXUtils.Utils”),将两个输入数字相加并返回结果。

Utils.cls:

Public Function Sum(ByVal a As Integer, ByVal b As Integer) As Integer     
    Sum = a + b
End Function
  • 这是重要的一步 - 在管理命令提示符中,在默认 Web 应用程序位置注册 Vb6 Active X dll: C:\inetpub\wwwroot

Register Custom VB6 DLL

  • 创建并安装一个简单的 asp 页面,实例化上面的 dll。安装位置是默认的 Web 应用程序位置 C:\inetpub\wwwroot

默认.asp:

<%@ Language=VBScript %>
<%
Option Explicit
Response.Expires = 0
Response.Expiresabsolute = Now() - 1 
Response.AddHeader "pragma","no-cache" 
Response.AddHeader "cache-control","private" 
Response.CacheControl = "no-cache" 

Function Sum(a, b)
    Sum = a + b
End Function

Function Sum2(a, b)
    Dim adder
    set adder = Server.CreateObject("CXUtils.Utils")
    Sum2 = adder.Sum(a, b)
    set adder = nothing
End Function
%>
<html>
    <head>
        <title>Add</title>
    </head>
    <body>
    <b>2 + 3</b> = <%= Sum(2,3) %><br />
    <b>3 + 4</b> = <%= Sum2(3,4) %>
    </body>
</html>
  • 浏览到网络应用并查看结果

Sample asp page results

如果这不能全部编译,我深表歉意 - 需要进行大量编辑才能使格式正确显示。

关于windows-7 - 32 位 Windows 和 IIS 7 中的 Server.CreateObject( ) 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13822353/

相关文章:

java - 可执行文件在应该找到 64 位 Java 时却发现 32 位 Java

c# - Microsoft Speech API (SAPI) SpVoice 停止功能的一种方式

dll - 64 位操作系统上的 32 位 ActiveX DLL 问题

visual-studio-2010 - Visual Studio 2010 Beta 2开始要求提升

windows-7 - 带触摸界面的残疾人控件的用户体验设计

c - SetComputerName 函数的问题

javascript - 带有 Request.Form 的 JScript 数组

c# - 模拟 COM 对象

.net - 将 .Net 类公开给 COM,同时它具有私有(private)泛型类型成员

asp-classic - 经典 ASP 中的 PDF 保护和 SEO