2017-06-01 70 views
0

我创建了一个C#中的Azure的网站这在本地C++动态库引用。本地主机应用程序运行良好。蔚蓝的web应用程序与C++ DLL不工作

但是,当我已经部署了Web应用程序云Azure的,它不工作。不知道如何前进。请帮忙。

在复位API调用得到下面的“出现错误。”

+0

首先,你应该检查,如果可以找到DLL和可能的其他依赖关系。 – Simon

+0

此外,请检查dll位的内容是否与您的Web应用程序配置为使用的位置相匹配(即32位与64位)。 –

回答

0

在复位API调用得到下面的“出现错误。”

要从ASP.NET REST API获取详细的错误信息,我们需要在WebApiConfig.cs中将IncludeErrorDetailPolicy属性的值设置为'Always'。

config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always; 

,如果你有改变的IncludeErrorDetailPolicy后的例外是DllNotFoundException,请确保本机DLL被成功部署到Azure的Web应用程序的bin文件夹。默认情况下,原生DLL文件不会与您的VS发布一起部署。您需要使用FTP或Kudu站点将此文件上传到您的Web应用程序的bin文件夹。

如果您在更改IncludeErrorDetailPolicy之后得到的异常为BadImageFormatException,则需要检查Web App的平台和本机DLL。

enter image description here

如果你的Web应用程序的平台是32位,请确保本地DLL是构建目标的Win32或所有平台。如果您在64位机器上构建DLL。所有平台都是必需的。

enter image description here

此外,Azure的Web应用程序在一个安全的环境中运行叫做沙箱。沙盒通常旨在限制对Windows共享组件的访问。有关详细信息,以下链接供您参考。

General Azure Web App Sandbox Restrictions

如果您的本机DLL使用受限的API之一。调用您的本地DLL也将失败。要查看本机DLL的所有依赖模块,可以下载并使用Dependency Walker

+0

谢谢你的回应。 我看到的错误信息是 System.DllNotFoundException 即使我在bin文件夹(/ site/wwwroot/bin)中有正确的dll,也会抛出此异常 – Mahendra971

+0

您选择了哪个平台选择您的Web应用程序? 32位或64位?当我将C++ DLL部署到32位Web App时,我也遇到了DllNotFoundException。最后,我通过重建C++ DLL并选择“Win32”作为平台来解决它。 – Amor

+0

我已经创建了64位平台的Web应用程序,并构建了64位C++ dll(发布配置)。这已经解决了这个问题。 1.在relase模式下使用64位配置生成C++库。 构建 - >配置管理器 选择---> Reslease,平台64 2.采用64位配置调试模式 编译生成Web应用程序 - >配置管理器 选择--->调试,平台x64 3.在64位配置中运行Azure中的Web应用程序。 应用程序设置 - > 64位 谢谢@ Amor-MSFT提供的解决方案。 – Mahendra971

相关问题