- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近开始将 .NET 应用程序迁移到 Windows Azure 云服务。我们的应用程序严重依赖于许多 COM 类组件,其中包括 AspPDF(用于 PDF 生成和操作)和 AspJPEG(用于调整图像大小)。在典型的非云 IIS 设置中,我只需在我们的生产服务器上注册 DLL(使用 regsvr32),一切都会好起来的!
在 Azure 中,过程略有不同,我将回答我自己的问题,以帮助那些面临类似挑战的人。此方法可用于作为部署过程的一部分需要在服务器上注册的任何 dll。
最佳答案
为了在 Windows Azure 云服务上注册 AspPDF 和 AspJPEG 组件,必须将 DLL 注册过程合并到部署例程中。当 Azure 解压应用程序时,它必须触发命令来注册 DLL,该命令必须保留在所有 VM 上,以确保这些依赖项在云环境中一致工作。
为了实现这一点,我们可以指示在目标服务器上执行一个命令文件。该任务在 ServiceDefinition.csdef 文件中定义如下:
<Startup>
<Task commandLine="RegisterPersits.cmd" executionContext="elevated" taskType="simple" />
</Startup>
提升的执行上下文确保必须在服务上线之前执行此过程。 Azure Fabric Controller 将在 BIN 文件夹中查找 .cmd 文件。您可以在记事本中创建 .cmd,然后更改扩展名。这是 .cmd 文件的内容。
chcp 1252>NUL
regsvr32 /s .\library\asppdf64.dll
regsvr32 /s .\library\aspjpeg64.dll
exit /b 0
我们使用参数/s 调用 regsvr32 工具,这确保响应是静默的,即没有会混淆结构 Controller 的弹出窗口。这很重要,因为我浪费了大量时间想知道为什么部署过程卡在初始化阶段......添加/s 参数解决了这个问题!
就我而言,我将 DLL 放置在名为“库”的文件夹中,但您可以将它们放置在您喜欢的任何位置,只要它们在 .cmd 文件中正确引用即可。还请确保为 Visual Studio 中的启动命令中引用的任何 DLL 设置以下文件属性:
构建操作:内容
复制到输出目录:始终
这个注册 DLL 的额外过程给部署过程增加的时间几乎可以忽略不计。 AspPDF 特有的另一点是使用正确的 DLL 版本的重要性。 Persits 发布 32 位和 64 位 dll,Azure VM 在 64 位环境中运行,因此在上述过程中注册 asppdf64.dll 很重要,注册 32 位 dll 会在应用程序中引发模糊错误。幸运的是,您不需要为 64 位版本的 AspPDF 购买单独的许可证。
我希望这能够帮助其他面临类似问题的人将 com 类组件(例如 AspPDF)迁移到 Azure。
关于.net - Windows Azure 上的 AspPDF 和 AspJPEG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14981830/
我最近开始将 .NET 应用程序迁移到 Windows Azure 云服务。我们的应用程序严重依赖于许多 COM 类组件,其中包括 AspPDF(用于 PDF 生成和操作)和 AspJPEG(用于调整
我是一名优秀的程序员,十分优秀!