ASP页面中的错误'80131509'

Bug*_*ort 6 iis-7 asp-classic

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

这在我们的开发环境中运行良好,但我们在UAT环境中遇到此错误.开发和UAT几乎相同,只是UAT更安全.我尝试了所有可能的方法,但没有运气.我正在处理这个问题过去4天,任何帮助将不胜感激.

我怀疑在暴露该DLL时IIS 7可能存在一些权限问题.但不确定它可能是什么?我们也给了IUSR完全的权利.

代码:

set obj = Server.CreateObject("DataAccess")
dim rs
set rs=obj.GetLocations("All") <--- **Here i am getting an error.**
Run Code Online (Sandbox Code Playgroud)

小智 3

我的工作中有一些 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. 创建时崩溃

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