为什么WinHttpHandler导致"无法加载DLL' api-ms-win-core-localization-l1-2-0.dll'"在生产服务器上?

时间:2016-04-26 17:08:43

标签: c# asp.net .net dll

我们已经开始在ASP.NET应用程序中使用WinHttpHandler NuGet包。在开发机器上它运行良好,并且也适用于我们的临时环境。该应用程序的目标是.NET 4.6.1。

但是,在生产时会抛出以下错误:

System.DllNotFoundException: Unable to load DLL 'api-ms-win-core-localization-l1-2-0.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

我已经搜索了很多关于这个问题的信息,但是找不到关于这个dll的任何有意义的信息。 (我在论坛中发现有些人在遇到类似问题时手动将dll复制到他们的生产服务器,但这似乎不是正确的解决方案。)

这个dll来自哪里?它应该明确安装吗?

(在我的开发机器上,我在C:\Windows\System32的{​​{1}}上找到了它,我在C:\Windows\System32\downlevel的分期计算机上找到它,但我不知道它来自哪里。)

1 个答案:

答案 0 :(得分:3)

我认为您对API Sets有疑问。 该DLL仅适用于Windows 8 API Sets,并且如msdn

所述
  

API集依赖于库加载器中的操作系统支持   有效地将命名空间重定向组件引入到   库绑定过程。受各种输入的影响,包括API   设置名称和绑定(导入)上下文,库加载器执行   对目标主机二进制文件的引用的运行时重定向   包含适当的API集实现。

所以我的建议是联系包的所有者并详细描述您使用该包的环境(操作系统,Target .Net Framework Identifier,Target .Net Framework Version等)。 希望他们能找到并修复错误。

更新:以下是对该软件包GitHub page的讨论。对这个问题的正确长期解决方案尚不清楚。

TLDR:安装Visual C++ Redistributable for Visual Studio 2015解决了这个问题。