【问题标题】:Could not load file or assembly - not working on asp, works on desktop无法加载文件或程序集 - 无法在 asp 上工作,在桌面上工作
【发布时间】:2017-10-26 12:03:13
【问题描述】:

在使用 native dll 对 asp.net web 项目 的依赖并在 VS2015 中使用 IIS express 进行调试时,我感到害怕:

无法加载文件或程序集“XXX.DLL”或其依赖项之一。找不到指定的模块。

说明:在执行当前网络请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.IO.FileNotFoundException:无法加载文件或程序集“XXX.DLL”或其依赖项之一。找不到指定的模块。

但是相同的依赖项在同一台机器上的简单表单应用程序中工作正常 - 因此我假设所有依赖项和共同依赖项都存在

或许你有一些线索,这怎么可能?

我已经尝试过的:

  • 将所有潜在的依赖项放在 Web 项目输出文件夹中
  • 将所有潜在的依赖项放在 /system32/ 路径中
  • 将所有潜在的依赖项放在 /system32/inetsrv 和 /sysWOW64/inetsrv 中
  • 安装 c++ 可再发行组件(2010、2012、2013)
  • 我“解锁”了 dll,因为它们“来自另一台计算机”(CASpol)
  • dependency walker 没有给出任何明确的结果
  • 过程监视器没有给出任何明确的结果

一些细节:

VS2015 社区,在带有 Windows Server 2012(测试系统)的 Azure VM 上运行,全新安装

该应用程序使用 CGAL 和 BOOST 库 (c++)。

“依赖树”如下:C#包装器引用了一个CLR C++项目,该项目又引用了本机C++(只有这个使用CGAL/Boost);

然后在表单应用程序(有效)或 asp.net Web 应用程序(无效)中使用 C# 包装器;

将 Cgal dll(大约 6 个文件)放入 bin 输出文件夹足以运行表单应用程序。

PS:当然,在我的 2 台开发机器(Win 7、Win 10)上,asp.net 项目运行顺畅——但这些包含大型 c++ 的专用安装参考文献。

PPS:由于外部原因,我目前确实更喜欢使用iis express。我必须在开发环境中模拟在干净的 Win10 笔记本电脑上部署应用程序,外部安装最少

PPPS 看来 win10 开发机器根本不工作 - 编辑:这是关键线索,请参阅下面的答案和Ho do I reference native files in IIS express?

我现在有点卡住了,谢谢。

【问题讨论】:

  • 2个思路:(1)你能不能在故障发生前对web服务器进程进行调试,并可能得到更多信息。 (2) 将其剥离回存根实现并重新添加代码直到它中断。

标签: c# c++ asp.net .net dependencies


【解决方案1】:

解决方案:在 Win 10 上,我将 dll 输出(\bin 文件夹)复制到 Program Files (x86)\IIS Express 文件夹中(因为我使用的是 32位版本)。

显然,Win7 不需要这样做 - 我将不得不调查原因

我在以下位置找到了这个解决方案: Ho do I reference native files in IIS express?

编辑:另一个更优雅的 (?) 解决方案是在 web.config 中禁用影子复制,如 http://faithlife.codes/blog/2013/05/using-native-dlls-from-asp-net-apps/

“我发现的最简单的解决方案是关闭影子复制,这会导致直接从 bin 目录加载 DLL。(...) 只需将 hostingEnvironment 元素添加到您的web.config:"

<configuration>
 ...
  <system.web>
    ...
    <hostingEnvironment shadowCopyBinAssemblies="false" />

【讨论】:

  • 禁用卷影复制对我来说非常有效!在我发现这一点之前,我花了太多时间跟踪事情,因为调试没有发现问题,procmon 也没有。您应该将其标记为答案。 :-)
猜你喜欢
  • 2019-04-11
  • 1970-01-01
  • 2013-05-12
  • 1970-01-01
  • 2016-10-07
  • 2020-10-26
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
相关资源
最近更新 更多