gpt4 book ai didi

.net - Windows Azure 上的 AspPDF 和 AspJPEG

转载 作者:行者123 更新时间:2023-12-04 15:13:07 26 4
gpt4 key购买 nike

我最近开始将 .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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com