【问题标题】:ASP:NET - IIS Issue with 3rd Party DLLASP:NET - 第三方 DLL 的 IIS 问题
【发布时间】:2015-07-20 13:32:29
【问题描述】:

我在 asp.net 应用程序中使用第 3 方 dll 文件。在开发环境中一切正常。

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

当我需要在 IIS(默认站点除外)上创建一个新网站时,问题就开始了。所以我创建了一个新站点,一个新的目录路径(不是 wwwroot),遇到了一些权限问题,我解决了。然后我启动了应用程序,似乎运行良好,但是当我尝试访问使用第 3 方 dll 引用的特定页面时,应用程序从 3rd 拥有的函数引发异常(错误名称或数字......)派对 dll。

很奇怪,在 IIS 默认站点中一切正常,但在我使用新的 IIS 站点时会崩溃。不知道怎么办,有什么想法吗?谢谢

【问题讨论】:

  • Bad name or number 看起来像旧的 VB6 错误消息。你能发布你收到的确切例外吗?
  • 我同意@FrédéricHamidi; DLL 可能是一些需要向系统注册的旧 VB6 COM 库(或 C++ ATL)。有时,一个简单的regsrv32.exe /i <your_dll_library>.dll 命令就可以将其注册到Windows。在其他情况下,您可能需要实际运行一些随库提供的安装程序。
  • 这些库在 vs 项目中被引用并编译在一个单独的 dll 中。当我在默认站点应用程序池中部署应用程序时,不会发生此异常。 “System.Runtime.InteropServices.COMException (0x800A0034): 错误的文件名或编号\r\n 在 Interop....”

标签: c# asp.net iis dll


【解决方案1】:

检查您在新站点中指向的应用程序池,并确保将其设置为正确的 .NET 版本。当您创建新站点时,您可能刚刚使用了默认应用程序池。

【讨论】:

  • 这也是检查的好东西。此外,请确保您还检查了应用程序池的“位数”,并且它与您尝试使用的库的“位数”相匹配。
  • 我被这个问题困扰了好几天,我已经尝试在新的应用程序池中复制每个配置以匹配默认应用程序池配置!它配置为在 32 位模式下运行的应用程序,我还将 .NET 从 2.0 更改为 4.0(必需)。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2011-05-13
    • 2013-08-29
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多