如何将MSHTHML.dll和SHDOCVW.dll发布到Azure

如何将MSHTHML.dll和SHDOCVW.dll发布到Azure

问题描述:

我有一个第三方网页屏幕捕获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呈现),并且我们能够继续。

我认为在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