Server.CreateObject()失败,32位Windows和IIS 7

use*_*838 11 com createobject asp-classic windows-7

Windows 7 32位,IIS 7.5.760016385

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

set obj = Server.CreateObject("a.b")
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

006 ASP 0178
Server.CreateObject访问错误
检查权限时对Server.CreateObject的调用失败.此对象拒绝访问.
err.number = -2147024891

我已经尝试创建iusr_cmpname用户并在此ASP页面的默认网站和虚拟目录中为其授予权限.我有REGSVR32的dll.

我已经去了"打开和关闭Windows功能"并选择了IIS /万维网服务/应用程序开发功能,然后检查了ASP,ASP.net,ISAPI扩展和ISAPI文件管理器.

我已经跟踪了不同新闻组中的许多线索,但我可以解决这个问题.我们去年尝试了这一年,一年半和前一年,并遇到了同样的问题.由于我们无法克服这个问题,我们回到了Windows NT.我们在NT上从未遇到过这个问题.

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

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

chu*_*e x 5

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

这就是我所做的:

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

  • 启用 Windows ASP 功能

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

启用 32 位应用程序池

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

实用程序.cls:

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

注册自定义 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>
Run Code Online (Sandbox Code Playgroud)
  • 浏览到网络应用程序并查看结果

示例 asp 页面结果

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


Pet*_*man 1

此页面表明问题可能是分配给 VB 运行时的访问权限。尝试为每个人分配对 Msvbvm60.dll 的读取和执行权限。

http://support.microsoft.com/kb/278013