加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

iis-7 – 从IIS 7上的经典ASP创建COM组件时出现“Server.CreateO

发布时间:2020-12-16 07:28:43 所属栏目:asp.Net 来源:网络整理
导读:我在 Windows Server 2008 R2 Standard中的IIS 7上运行了一个经典的ASP应用程序. 它在当天的某个时刻正常工作,突然间,在没有任何代码更改的情况下,它在实例化COM组件时开始抛出以下错误: MyObject = Server.CreateObject("MyCustomComponent.MyCustomObject
我在 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属性页”选项卡,将“池大小”设置为大于1的数字,以匹配将从IIS或其他位置同时访问该组件的潜在应用程序池的数量.

>再次尝试您的网页,然后再次运作!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读