6

我们创建了一个 .Net 程序集并使其可作为 COM 对象访问。当我们试图在 ASP 页面中公开此对象的任何方法时,我们会收到错误“80131509”。我们在实例化对象时没有收到任何错误。即 Server.CreateObject 正在通过。

这在我们的开发环境中运行良好,但在 UAT 环境中出现此错误。开发和 UAT 几乎相同,只是 UAT 更安全。我已经尝试了所有可能的方法,但没有运气。在过去的 4 天里,我一直在处理这个问题,我们将不胜感激。

我怀疑 IIS 7 在公开该 dll 时可能存在一些权限问题。但不确定它可以是什么?我们也给予了IUSR 的全部权利。

代码 :

set obj = Server.CreateObject("DataAccess")
dim rs
set rs=obj.GetLocations("All") <--- **Here i am getting an error.**
4

1 回答 1

2

我们有一些 com dll 在我的工作中,我们经常遇到问题,我们使用 regasm 注册 dll 并且 dll 不起作用。它可以在其他实时环境中使用,但由于某种原因,它无法在这种情况下使用。Com dll 变化无常。有时我们会注册它,取消注册它,重新注册它,然后重新启动。有时他们会神秘地开始工作,有时则不会。

还有一些可能出错的事情。

确保在 dll 所在的文件夹和 dll 本身上设置了正确的权限。还要确保存在任何依赖的 dll 并且具有正确的权限。确保 dll 需要访问的所有内容也具有正确的权限。

如果失败打开注册表。搜索与 com 对象关联的 guid。有时您会发现注册表的路径都混淆了。清除对 com 对象的所有引用,重新启动并重新注册它。

我还看到构造函数中抛出异常导致问题。当 com 对象启动时,它会爆炸。在我们的一个对象中添加了一种在发生异常时发送电子邮件的方法。

在一种情况下,我们有一个旧的 com 对象,它不再与我们正在运行的 Windows 版本兼容。如果您已经升级了它所在的服务器,则可能是问题所在。在我们的例子中,我们编写了自己的组件来替换损坏的旧组件。

还要确保如果 com 对象是强类型的,则使用“regasm /tlb /codebase fickle_com_object.dll”

简而言之,有几件事会导致 com 对象不起作用:

  1. 注册表中的多个路径
  2. 文件夹的安全权限错误
  3. 创建时崩溃

也许其中一件可以解决您的问题。我知道有时会很困难。祝你好运!

于 2012-09-07T01:36:45.863 回答