在使用 ASP 客户端的 Visual Basic IDE 中调试 COM+ 组件时发生错误

文章翻译 文章翻译
文章编号: 259725 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

症状

在基于 Microsoft Windows 2000 的计算机上的 Visual Basic 6.0 中调试 Microsoft COM+ 1.0 版组件时,如果客户端是 Active Server Pages (ASP) 页,则浏览器中可能显示以下错误信息:
Server object, ASP 0178 (0x800A0005) The call to Server.CreateObject failed while checking permissions.Access is denied to this object.
在基于 Microsoft Windows XP 的计算机上的 Visual Basic 6.0 中调试 Microsoft COM+ 1.5 版组件时,如果客户端是 Active Server Pages (ASP) 页,则浏览器中可能显示以下错误信息:
Server object, ASP 0178 (0x800A0005) The call to Server.CreateObject failed while checking permissions.Access is denied to this object.
仅当您在 Visual Basic 集成开发环境 (IDE) 中运行 COM+ 组件时,才会出现此错误。在 COM+ 应用程序的编译状态下运行 COM+ 组件时,不会出现此错误。

原因

进行身份验证的用户(通常是 IUSR_<计算机名> 帐户,如果您使用匿名访问)没有访问 DCOM 服务器(本例中为 VB6.exe)所需的正确权限。在 Visual Basic IDE 中调试 COM+ 组件时,启动用户是交互式用户,访问 DCOM 服务器的用户是进行身份验证的用户。

由于没有用于 VB6.exe 的 DCOM 条目,因此 DCOM 将使用默认权限。在 Windows 2000 和 Windows XP 中,DCOM 默认访问权限默认情况下只授予系统帐户和启动用户。由于启动用户和访问 DCOM 服务器的用户不是同一用户,因此将出现“症状”一节中显示的错误信息。

解决方案

可使用两个建议的替代方法:

替代方法 1

在注册表中为 VB6.exe 添加 DCOM 条目。这使您能够设置特定的 DCOM 权限,用于在 Visual Basic 中调试 COM+ 组件。
  1. 在 DCOM 中创建 VB ASP 调试条目:
    1. 启动 Microsoft 记事本或其他文本编辑器,然后键入以下语法(区分大小写):
      REGEDIT4
      [HKEY_CLASSES_ROOT\CLSID\{70F214BA-94E2-4bdf-8F30-32CB4A905E4D}]
      @="VB ASP Debugging"
      [HKEY_CLASSES_ROOT\CLSID\{70F214BA-94E2-4bdf-8F30-32CB4A905E4D}\LocalServer32]
      @="vb6.exe"
      [HKEY_CLASSES_ROOT\AppID\vb6.exe]
      "AppId"="{70F214BA-94E2-4bdf-8F30-32CB4A905E4D}"
    2. 将文件保存为 Vbaspdbg.reg。
    3. 找到保存 Vbaspdbg.reg 文件的文件夹,然后双击此文件(它将自动注册到 Windows 注册表中)。
  2. Everyone 帐户添加到 DCOM 权限中,以用于 Visual Basic ASP 调试。

    Windows 2000
    1. 启动 DCOMCNFG。在开始菜单上,单击运行,然后在对话框中键入 dcomcnfg
    2. 分布式 COM 配置属性页上,单击应用程序选项卡,从列表中选择 VB ASP 调试,然后单击属性
    3. VB ASP 调试属性属性表中,单击安全性选项卡,然后单击以选中使用自定义访问权限复选框。单击编辑
    4. 注册表值的权限窗口中,单击添加,然后为允许访问添加 Everyone 帐户。
    5. 单击确定,然后单击应用以应用更改并退出分布式 COM 配置属性页。
    6. 重新启动计算机,以使更改生效。
    Windows XP

    1. 启动 COM+ Explorer。在开始菜单中,单击管理工具,然后单击组件服务
    2. 依次单击以展开组件服务计算机我的电脑DCOM 配置
    3. 右键单击 VB ASP 调试,然后单击属性
    4. 安全选项卡上的访问权限下,选择自定义,然后单击编辑
    5. 访问权限窗口中,单击添加,然后添加 Everyone account for Allow Access(允许访问的 Everyone 帐户)选项。
    6. 单击确定,再单击应用,然后单击确定以应用更改,并退出“DCOM 配置属性”页。
    7. 重新启动计算机,以使更改生效。

替代方法 2

  1. 为进行调试,可将 ASP 页所在的“虚拟目录”的“应用程序保护”配置为“高(独立)”。这将强制 ASP 页在它自己的进程中运行,从而可以更改安全性而不会影响网站的其他内容。
    1. 启动 Internet 服务管理器。
    2. 右键单击 ASP 页所在的虚拟目录,然后单击属性
    3. 单击虚拟目录选项卡,然后在应用程序保护下拉列表中选择高(独立)
    4. 单击应用
  2. 关闭对此虚拟目录的匿名访问,并确保选中了集成 Windows 身份验证基本身份验证
    1. 在“虚拟目录”的属性对话框上,单击目录安全性选项卡。
    2. 单击匿名访问和身份验证控制编辑
    3. 确保清除了“匿名访问”复选框。
    4. 单击集成 Windows 身份验证基本身份验证
  3. 如果使用集成 Windows 身份验证,请运行客户端浏览器以便使用与 Visual Basic IDE 调试会话相同的用户帐户访问 ASP 页。如果使用基本身份验证,请输入 Visual Basic IDE 调试会话在其中运行的同一用户帐户的用户名和密码。

    注意:第二个替代方法假定 COM 的“默认访问权限”未发生更改。如果“默认访问权限”从未更改过,则 COM 将构建一个访问控制列表 (ACL),以便向系统帐户和服务器标识授予权限。在这种情况下,服务器标识是登录并运行 Visual Basic IDE 调试会话的用户。如果 DCOM 的“默认访问权限”被更改过,则第二个替代方法需要将 Visual Basic IDE 调试会话在其中运行的用户帐户添加到“默认访问权限”中。这可以通过使用 DCOMCNFG 来完成。有关其他信息,请参见“更多信息”一节中的“COM 安全性”链接。

状态

这种现象是设计所导致的。

更多信息

Microsoft Windows NT 4.0 和 IIS 4.0 中不会发生这种现象。 有关基于 Windows NT 4.0 的计算机上的 ASP 0178 错误的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
198432 PRB:实例化 COM 对象时发生服务器对象错误“ASP 0178”
有关 COM 安全的其他信息,请访问下面的 Microsoft Developer Network (MSDN) 网站:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/htm/security_0icz.asp

属性

文章编号: 259725 - 最后修改: 2005年10月24日 - 修订: 4.1
这篇文章中的信息适用于:
  • Microsoft Active Server Pages 4.0?当用于
    • Microsoft Windows 2000 Standard Edition
    • Microsoft Windows XP Professional
  • Microsoft Visual Basic 6.0 企业版
关键字:?
kbbug kbdebug kbprb kbvbp600 kbcomplus KB259725
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com