我们创建了一个.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.**
答案 0 :(得分:2)
我的工作中有一些功能,我们经常遇到问题,我们用regasm注册dll而dll不起作用。它适用于其他实时环境但由于某种原因它只在这一个实例中不起作用。 Com dlls变幻无常。有时我们会注册它,注销它,重新注册它,然后重启。有时他们神秘地开始工作,而不是。
还有一些问题可能出错。
确保在dll所在的文件夹和dll本身上设置了正确的权限。还要确保存在任何依赖dll并且还具有正确的权限。确保dll需要访问的所有内容也具有正确的权限。
如果失败则打开注册表。搜索与com对象关联的guid。有时您会发现注册表所具有的路径都混淆了。清除对com对象的任何引用,重新引导并重新注册它。
我还看到在构造函数中抛出异常导致问题。当com对象启动时,它会爆炸。在我们的一个对象中添加了一个在发生异常时发送电子邮件的方法。
在一个案例中,我们有一个旧的com对象,它不再与我们运行的Windows版本兼容。如果您已升级服务器,则可能是问题所在。在我们的例子中,我们编写了自己的组件来替换破旧的组件。
还要确保如果强类型的com对象使用“regasm / tlb / codebase fickle_com_object.dll”
简而言之,有几件事情导致com对象不起作用:
也许其中一件事可以解决您的问题。我知道有时候会有多困难。祝你好运!