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

问题描述 投票:0回答:2

我有一个 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 4.0.30319\临时 ASP.NET 文件 oot\9abdb93b55bb86 ssembly\dl3I3eba9 8d3984_ccb1cb01\Assembly.dll。 日志:程序集已在默认加载上下文中加载。”

在第二个日志中说

===预绑定状态信息===

日志:显示名称 = 程序集名称(部分)

WRN:提供了部分绑定信息 组装:
警告:程序集名称:程序集名称 |域 ID:2

警告:当只有程序集显示名称的一部分时,会发生部分绑定 提供。
警告:这可能会导致活页夹加载不正确的程序集。
WRN:建议提供完整指定的 程序集的文本标识,
WRN:由简单名称、版本、区域性和公钥令牌组成。
警告:请参阅白皮书 >
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 isual studio 2012\项目\MvcApplication1\MvcApplication1 中 日志:动态基础 = C:\Windows\Microsoft.NET\Framework 4.0.30319\Temporary ASP.NET 文件 oot\9abdb93b 日志:缓存基础 = C:\Windows\Microsoft.NET\Framework 4.0.30319\Temporary ASP.NET 文件 oot\9abdb93b 日志:AppName = 4655bb86 调用程序集:(未知)。 === WRN:找不到匹配的本机图像。 日志:从 C:\Windows\Microsoft.NET\Framework 4.0.30319\Temporary ASP.NET 加载 IL 程序集 文件 oot\9abdb93b55bb86 ssembly\dl3I3eba9 8d3984_ccb1cb01\AssemblyName.dll。



1- 这可能是因为 MS C++ 可再发行软件包更新!卸载它们并再次重新安装。
2-我认为 IIS 正在为一个路径中的每个托管 dll 创建一个卷影副本,但对于非托管的另一个路径,您必须对其进行配置。检查
c# asp.net-mvc-4 filenotfoundexception
2个回答
1
投票
以获取更多信息。


您在 x64 平台上运行吗?那么 IIS 可能以 x64 模式运行并且根本不加载 x86 dll。


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.