为什么我的ASP.NET项目没有加载Dll?

时间:2013-01-11 12:30:55

标签: c# asp.net-mvc-4 filenotfoundexception

我有一个 ASP.NET MVC 4 项目。我引用了一个托管的C ++ dll ,它在内部调用非托管C ++ dll 的方法。问题是我在Visual Studio中调试项目时遇到“无法加载文件或程序集或其中一个依赖项”错误。它无法找到的Dll由非托管C ++ dll 使用。我将所有必需的DLL放在ASP项目的bin目录中。

在WPF项目中一切正常但我在ASP.NET MVC4项目中做同样的事情时遇到错误。启动/调试ASP.NET MVC4项目时出错。

我已经尝试了几乎所有的功能,但不确定为什么会出现这个错误。

想法?

修改 我尝试了Fuslogvw.exe,它正在创建两个输出/日志文件。我对它的输出感到有点困惑

最后说的一个文件

  

绑定成功。返回汇编   C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET   文件\根\ 9abdb93b \ 4655bb86 \组件\ DL3 \ 5113eba9 \ 008d3984_ccb1cb01 \ Assembly.dll。   日志:程序集在默认的加载上下文中加载。“

在第二个日志中,它说

  

===预绑定状态信息===
  日志:DisplayName = AssemblyName(部分)
  警告:提供了部分绑定信息   组装:
  警告:程序集名称:AssemblyName |域名ID:2
  警告:当只有部分程序集显示名称为时,会发生部分绑定   提供。
  警告:这可能导致装订器加载错误的装配   警告:建议提供完全指定的   装配的文字标识,
  警告:它由简单的名称,版本,文化和公钥令牌组成   警告:参见白皮书> http://go.microsoft.com/fwlink/?LinkId=109270了解更多信息和   这个问题的常见解决方案   日志:Appbase = file:/// c:/users/haris.hasan/documents/visual studio   2012 /项目/ MvcApplication1 / MvcApplication1 /
  日志:初始PrivatePath = c:\ users \ haris.hasan \ documents \ visual studio   2012 \项目\ MvcApplication1 \ MvcApplication1 \ BIN
  日志:动态Base = C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET   文件\ ROOT \ 9abdb93b   日志:缓存基础= C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET   文件\ ROOT \ 9abdb93b   日志:AppName = 4655bb86调用程序集:(未知)。   ===警告:找不到匹配的原生图像。
  日志:IL程序集从C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET加载   文件\根\ 9abdb93b \ 4655bb86 \组件\ DL3 \ 5113eba9 \ 008d3984_ccb1cb01 \ AssemblyName.dll。

2 个答案:

答案 0 :(得分:1)

您是否在x64平台上运行?然后,IIS可能在x64模式下运行,并且根本不加载x86 dll。

您可以通过将相关的IIS应用程序池设置为x86模式(enable32BitAppOnWin64 => true)来测试它,并测试它是否正常工作。

此外,托管DLL和/或C ++ dll的安全设置可能会阻止加载。在C ++ DLL上,请确保“经过身份验证的用户”组至少可以读取它。

答案 1 :(得分:1)

1-可能是因为MS C ++可再发行软件包更新!卸载它们并重新安装。
2-我认为IIS正在路径中创建每个托管dll的卷影副本,但是对于非托管的另一个路径,您必须配置它。感谢link获取更多信息。