2017-06-01 100 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

相關問題