gpt4 book ai didi

iis-7 - "Server.CreateObject Failed"从 IIS 7 上的经典 ASP 创建 COM+ 组件

转载 作者:行者123 更新时间:2023-12-04 22:48:03 24 4
gpt4 key购买 nike

我有一个在 Windows Server 2008 R2 Standard 的 IIS 7 上运行的经典 ASP 应用程序。

它在一天中的某个时刻工作正常,突然间,没有任何代码更改,它在实例化 COM+ 组件时开始抛出以下错误:

MyObject = Server.CreateObject("MyCustomComponent.MyCustomObject")

Server object error 'ASP 0177 : 80004005'

Server.CreateObject Failed

/path/script.asp, line xx

80004005



可能是什么问题呢?我在互联网上搜索并找到了几十个可能的答案,但似乎都与问题无关。我知道我使用了正确的对象名称——它在不久前还在工作。什么也没有变!我花了将近 2 个小时试图弄清楚这一点,但结果却是空的。

最佳答案

错误 80004005 的一般故障排除

考虑到导致此错误的潜在原因多种多样,因此可能难以对其进行故障排除。快速internet search揭示了大量的建议。

将可能的问题缩小到合理列表的关键在于代码正在运行,但突然开始失败,没有任何代码更改。假设没有主要的 IIS 或 COM 配置更改,这排除了例如为组件使用了错误的类名或组件未正确注册的可能性。相反,人们必须将注意力转向 IIS 和 COM 本身的某些配置,这些配置可能会在没有发生设置更改的情况下允许不一致的行为。

  • 查看对访问站点的用户、为运行 IIS 设置的用户或 COM 组件设置为模拟的用户帐户的任何用户帐户权限更改。
  • 在 IIS 中查看为站点或应用程序设置的应用程序池。
  • 查看 ASP 代码中的任何权限/身份验证/模拟代码。
  • 查看 COM 组件本身的设置。

  • 实际问题

    最终,问题归结为多个 IIS 站点和应用程序,每个站点和应用程序都在不同的 IIS 应用程序池中,使用相同的 COM 组件。这本身不是问题,只是 COM 组件被设置为允许最多 1 个应用程序池同时访问它。

    该页面运行了一段时间的原因是它设法首先获取了 COM 组件。如果任何人访问它,使用相同 COM 组件的其他站点/页面/应用程序池就会失败。由于 COM 组件被设置为在 3 分钟后发布,这让其他页面在访问时有机会“捕获”它并防止它在被测试的新页面中使用。

    修复

    以下是在 Windows Server 2008 中增加 COM 组件的应用程序池限制的详细说明:
  • 转至控制面板 > 管理工具 > 组件服务。
  • 在树中,浏览组件服务 > 我的电脑 > COM+ 应用程序并找到您的自定义组件。
  • 右键单击组件并获取属性。
  • 在 Pooling & Recyling 属性页选项卡上,将 Pool Size 设置为大于 1 的数字,以匹配将从 IIS 或其他地方同时访问组件的潜在应用程序池的数量。

    COM+ Pooling & Recycling
  • 再试一次你的网页,瞧,它又工作了!
  • 关于iis-7 - "Server.CreateObject Failed"从 IIS 7 上的经典 ASP 创建 COM+ 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15506912/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com