ASP.NET:与第三方DLL的IIS问题

问题描述:

我在一个asp.net应用程序中使用第三方dll文件。在开发环境中一切正常。ASP.NET:与第三方DLL的IIS问题

在部署时,我已将应用程序包导入到IIS默认站点进行测试。一切都像魅力一样工作。

当我需要在IIS上创建新网站时(缺省网站除外),问题就开始了。所以我创建了一个新网站,一个新的目录路径(不是wwwroot),有一些权限问题,我解决了女巫问题。然后我启动了应用程序,似乎工作得很好,但是当我尝试访问使用第三方dll的引用的特定页面时,应用程序从第三方拥有的函数中引发异常(错误的名称或编号...)党的dll。

奇怪的是,在IIS默认站点中一切正常,在我使用新的IIS站点时炸毁了。不知道该怎么做,有什么想法?谢谢

+1

*错误的名称或编号*看起来像一个旧的VB6错误消息。你能发布你收到的确切例外吗? –

+0

我同意@FrédéricHamidi;该DLL可能是一些旧的VB6 COM库(或C++ ATL),它需要在系统中注册。有时候,一个简单的'regsrv32.exe/i .dll'命令可以完成注册Windows操作。在其他情况下,您可能需要实际运行随库提供的一些安装程序。 – fourpastmidnight

+0

这些库在vs项目中被引用并被编译到一个单独的dll中。当我在默认站点应用程序池中部署应用程序时,此异常不会发生。 “System.Runtime.InteropServices.COMException(0x800A0034):错误的文件名或编号\ r \ n在Interop ....” – anibal

检查您在新网站中指向的应用程序池,并确保它设置为正确的.NET版本。当您创建新网站时,您可能只是采用了默认应用程序池。

+0

这也是一件好事情来检查。此外,请确保您还检查应用程序池的“位”,并确保它与您尝试使用的库的“位”相匹配。 – fourpastmidnight

+0

我坚持了几天,我已经尝试复制新应用程序池中的每个配置以匹配默认应用程序池配置!该应用程序被配置为以32位模式运行,同时我也将.NET从2.0更改为4.0(必需)。 – anibal

“已解决”,将新的应用程序池更改为默认应用程序池。仍然不知道为什么新池发生异常。