在IIS / ASP.NET MVC 4中未加载非托管依赖项的64位托管程序集
|
我有一个几乎空的ASP.NET MVC4项目引用64位托管程序集,它有一组非托管依赖项. 托管程序集通过引用以常规方式引用. 非托管依赖项将复制到post build事件的bin文件夹中 – 并在Web应用程序启动时出现(已经过验证). 问题是我得到:
这是非托管依赖项之一.完整列表是: > iconv.dll 托管的dll是针对x64构建的,所有依赖项也是x64(使用Dependency Walker验证). 现在我还创建了一个空白的控制台应用程序,一个Windows窗体应用程序和一个包含相同代码的自托管Web Api(用于使用托管程序集启动实例)并且它们都可以正常工作(强制构建目标时) 64). 使用Fusion Log(首先清除它,然后加载Web应用程序并刷新日志查看器),我可以看到加载时出现问题: > iconv.dll 它们都有类似的日志文件: LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/root/3b2d5b3e/b1b5f1f5/iconv.DLL. LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/root/3b2d5b3e/b1b5f1f5/iconv/iconv.DLL. LOG: Attempting download of new URL file:///C:/.../bin/iconv.DLL. LOG: Assembly download was successful. Attempting setup of file: C:...biniconv.dll LOG: Entering download cache setup phase. ERR: Error extracting manifest import from file (hr = 0x80131018). ERR: Setup failed with hr = 0x80131018. ERR: Failed to complete setup of assembly (hr = 0x80131018). Probing terminated. 所以它实际上发现依赖关系是在本地bin文件夹中,但由于某种原因它不能使用它们. 什么错误“从文件中提取清单导入错误(hr = 0x80131018).”意思? 依赖关系不在GAC中,并且它们未使用regsvr32(而不是COM)注册. 令我困惑的是,在IIS之外工作正常(我甚至尝试将应用程序池上的凭据设置为与本地网络凭据相同 – 当然,这没有什么区别). 有关如何调试此问题的任何好主意? 编辑: 我本地机器的“修复”是从bin目录中删除msvcm80.dll(C运行时).组件(可能)仍然需要,但是在其他地方查找(可能是因为我在WinSxS中安装了“正确”版本的CRT(可分发)). 深入研究,我看到托管程序集应该依赖于msvcm80.dll版本8.00.50727.6195(x64),但是我的本地系统上没有安装该特定版本(我只在依赖文件夹中安装它) – 但我做在WinSxs中有一个更新的(8.00.50727.6910). 那么当没有直接在bin文件夹中添加时,哪一个是IIS? 第二次编辑: 如果我确保间接依赖项在PATH环境变量中,而第二个依赖项在WinSxS中则可以.这显然不够好,但我无法弄清楚如何强制从单个位置/文件加载直接和间接依赖. 解决方法使用像 Dependency Walker这样的工具,您会发现lbm.dll及其依赖项仅依赖于msvcr80.dll而不依赖于msvcp80.dll和msvcm80.dll,即使这两个文件包含在lbm使用的Microsoft.VC80.CRT.manifest中. DLL将加载正确版本的Visual C 2005运行时库.从bin文件夹中删除msvcp80.dll和msvcm80.dll应该可以解决您的问题. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- azure – 获取#error = unsupported_response_typeerror_de
- asp.net-mvc – 通过伪造上下文测试:实体框架
- asp.net – 如何跟踪Linq-to-sql DataContext上的查询
- asp.net – 在什么情况下,.NET进程和AppDomains在内存中共享
- asp.net – web配置错误:无法识别的属性’xmlns:xdt’.请
- asp.net-mvc – 部署后不显示捆绑的css … ASP.NET MVC4
- asp.net – 如果启用ASP .Net请求验证,是否需要HtmlEncode
- asp.net-mvc – 如何将ms显示从LHS移动到RHS
- asp.net-mvc – 如何添加日志到MVC4 WebApi
- asp.net-mvc – 在ASP.NET MVC中调用Session_End()的时间是
- asp.net-mvc – 依赖注入和ASP.Net成员提供程序
- 休息 – 使用IHttpActionResult时如何获取帮助文
- .net – 在项目之间共享MasterPages的最佳方法是
- asp.net-mvc – ASP.Net MVC路由到用户名
- asp.net-mvc-3 – 在控制器动作中使用T4MVC生成U
- asp.net-mvc – Sammy.js和Knockout.js =模板没有
- 如何配置asp.net与.net 4.5
- asp.net-web-api – 如何使用web api和模型绑定定
- asp.net – ViewModel的列表是空的
- asp.net 汉字转换拼音及首字母实现代码
