2012-03-22 54 views
0

我有一個第三方網頁屏幕捕獲DLLhttp://websitesscreenshot.com/讓我定位一個URL並將頁面保存爲圖像文件。我將這段代碼移到了基於Azure的項目中,當我在本地沙盒開發框中運行它並保存到Azure blob時,一切都很好。但是,當我將這些位推送到Azure上的實時服務器時,它失敗了。如何將MSHTHML.dll和SHDOCVW.dll發佈到Azure

我想這是因爲無論MSHTML.DLL和/或SHDOCVW.DLL從我Azure的配置中缺少。

我怎樣才能得到這些庫(加上任何相關的二進制文件)達到Azure

我在MSFT論壇上發現了以下建議,但還沒有嘗試過。 http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/0344dcff-6fdd-4479-a3b4-3e89750a92f4/

您好,我還沒有嘗試在雲中使用mshtml。但一般來說,對於 在Web角色中使用本機DLL,您可以像添加圖片(選擇添加現有項目)一樣將該dll添加到Web角色 項目中。然後 確保生成操作設置爲內容。這告訴Visual Studio 將dll文件複製到輸出包。

還仔細檢查依賴關係。與原生 代碼相關的很多問題都是由缺少的依賴關係造成的,例如特定的VC++ 運行時DLL。

想到我在這之前先問這裏,然後在未經證實的解決方案上燒了一兩天。

編輯#1: 事實證明,我們的問題與Azure服務器中丟失的MSHTML.dll或SHDOCVW.dll無關。他們在那裏。

問題是,默認情況下,新服務器實例已啓用IE安全強化功能,這阻止了我們的第三方dll執行腳本。所以我們需要關閉增強的IE安全配置設置。這也是一個不平凡的練習。與此同時,我們只是在我們的網站上創建了一個服務器端版本的功能,我們需要從中截取屏幕截圖(例如,我們消除了客戶端上基於JSON的UI呈現),並且我們能夠繼續。

回答

1

我認爲在MSDN論壇主題中提到的解決方案是正確的。您應該將它們作爲項目文件的一部分,以便SDK將它們打包並部署到雲中的VM上。

但是,如果他們是COM並需要註冊,最好通過啓動功能調用註冊命令。請檢查http://msdn.microsoft.com/en-us/hh351539

HTH

+0

感謝您的反饋。我們明天再試一試,看看它是否有效。去年我們遇到了一些麻煩,註冊了一個不同的DLL,但是你鏈接的文章似乎給出了一個很好的總結。謝謝。 – 2012-03-22 07:35:35

+0

正如OP中「編輯#1」所述,我們的問題與在服務器上丟失DLL有關。但是我仍然接受你的答案,因爲它確實解決了我原來的問題,即使我們不需要走這條路。 – 2012-03-23 15:55:00