我们创建了一个.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 对象无法工作:
也许其中一件事可以解决您的问题。我知道有时这有多困难。祝你好运!