有很多关于在asp页面上运行.NET dll的页面,以及一些在具有不同框架的网站上运行dll的页面,但没有一个解决方案是我需要的组合,需要对类似问题进行新的迭代< / p>
我有一个ASP页面,我需要在其上运行一个dll(dll将调用一个服务并返回一些值)。该DLL是在Visual Studio 2013中编写的,设置为使用框架3.5运行。该网站使用的是2.0应用程序池,其上的NET页面也是用3.5编写的。
我发现的最简化的解决方案似乎达到了我的目标:
http://www.codeproject.com/Articles/12408/Call-a-NET-component-from-an-ASP-Page
使用控制台应用程序和网站(均为框架3.5设置),在调试中本地运行正常的dll
尝试在目标服务器上运行应用程序,它失败了。使用2.0应用程序池在Web上运行,我收到错误800a01ad - ActiveX组件无法创建对象。
如果我设置运行4.0应用程序池的测试网站,则页面和dll正常运行。如果我将所述网站切换到2.0应用程序池,则会失败。
可悲的是,将主网站切换到4.0应用程序池不是一种选择 - 回归测试过多。
用regasm和gacutil注册的dll -Iv'e尝试使用每个版本的2.0和4.0版本,以及将dll放在网站文件夹内外的目录中。没有影响测试站点的成功或主站点的失败。标志指向dll需要来自2.0 app池站点上不可用的其他文件或dll的数据,但我不知道它可能是什么。该网站正在访问其他位置的服务,并使用渠道工厂功能,如果这有用的话。
让我感到困惑的是应该通过COM访问dll,所以它应该独立运行,不是吗?
不确定web.config中是否有任何内容可能会在主站点上出现问题,但测试站点上的内容是相当不明显的
可以根据需要提供更多信息。