无法加载文件或程序集。在IIS 8.0上运行的32位程序集。

4
我正在尝试将一个在IIS 7中运行的WCF服务部署到IIS 8。在IIS 7中,要运行一个32位DLL,我必须在应用程序池中勾选“启用32位应用程序”。但是在IIS 8中这样做却没有效果。
精确的错误信息如下:
“无法加载文件或程序集'Progress.ssl.DLL'或其某个依赖项。指定的模块无法找到。描述:在当前 Web 请求的执行期间,出现了未经处理的异常。请检查堆栈跟踪,以获取有关该错误以及代码中其起源的更多信息。异常详细信息: System.IO.FileNotFoundException: 无法加载文件或程序集“Progress.ssl.DLL”或其中的某一个依赖项。指定的模块无法找到。”
在IIS 8中还有其他启用32位DLL运行的步骤吗?

3
你能详细说明一下“它不起作用”是指出现了什么错误吗? - CodingGorilla
以下是错误信息 无法加载文件或程序集“Progress.ssl.DLL”或其某个依赖项。找不到指定的模块。 描述:在执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪以获取有关错误的更多信息以及代码中的原始位置。 异常详细信息:System.IO.FileNotFoundException: 无法加载文件或程序集“Progress.ssl.DLL”或其某个依赖项。找不到指定的模块。 - Richard Butterwood
1
听起来你缺少一个DLL,打开绑定日志并查看是否有任何线索:https://dev59.com/-nVC5IYBdhLWcg3wjx1d。另外,你的DLL之一(或依赖项)可能是64位DLL,显然无法加载到32位进程中。 - CodingGorilla
3个回答

9

嘿,我曾经为这个问题苦苦挣扎了数小时,但是现在我有了解决方案:

打开 IIS 管理器:

  1. 选择应用程序池
  2. 然后选择正在使用的池
  3. 进入高级设置(在右边)
  4. 启用 32 位应用程序 的标志从 false 更改为 true

希望这能帮到你。


1

检查应用程序池是否配置了正确的 .net 框架,并确保您的 WCF 应用程序分配给此应用程序池。如果这些都正确,且您已为应用程序池启用了 32 位库,则它应该开始工作。


0

我刚刚发现有问题的32位DLL是使用.NET 2.0构建的。Server 2012正在运行.NET 4.5。


1
看起来你的电脑上也缺少MSVCR71.dll:http://nicholasbarger.com/2011/04/28/reviving-dependency-walker/ - Kev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接