我有一个来自http://websitesscreenshot.com/的第 3 方网页屏幕捕获 DLL ,它允许我定位一个 URL 并将页面保存到图像文件中。我已将此代码移动到基于 Azure 的项目中,当我在本地沙盒开发箱上运行它并保存到 Azure blob 时,一切都很好。但是,当我将这些位推送到 Azure 上的实时服务器时,它失败了。
我认为这是因为我的 Azure 配置中缺少MSHTML.dll和/或SHDOCVW.dll 。
如何将这些库(以及任何依赖的二进制文件)升级到Azure?
我在 MSFT 论坛上找到了以下建议,但还没有尝试过。http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/0344dcff-6fdd-4479-a3b4-3e89750a92f4/
你好,我还没有在云中尝试过mshtml。但一般来说,要在 Web Role 中使用本机 dll,您将 dll 添加到 Web Role 项目中,就像添加图片一样(选择添加现有项)。然后确保将构建操作设置为内容。这告诉 Visual Studio 将 dll 文件复制到输出包。
还要仔细检查依赖关系。很多与本机代码相关的问题都是由于缺少依赖项造成的,例如特定的 VC++ 运行时 dll。
以为我会先在这里问一下,然后再花一两天时间研究一个未经证实的解决方案。
编辑#1: 事实证明,我们的问题与 Azure 服务器中缺少的 MSHTML.dll 或 SHDOCVW.dll 无关。他们在那里。
问题是默认情况下,新服务器实例启用了IE 安全强化功能,这阻止了我们的第 3 方 dll 执行脚本。所以我们需要关闭增强的 IE 安全配置设置。这也是一个不平凡的练习。
与此同时,我们刚刚在我们的网站上创建了一个服务器端版本的功能,我们需要从中进行屏幕截图(例如,我们消除了客户端上基于 JSON 的 UI 呈现),并且我们能够继续进行。