gpt4 book ai didi

c# - Azure 上的 GhostScriptSharp

转载 作者:行者123 更新时间:2023-12-02 08:08:59 24 4
gpt4 key购买 nike

我认为同一问题有两种症状。

我已使用 Nuget 安装了 GhostScriptSharp,并在 Azure Development Fabric 中的 32 位机器上本地运行它。一切都运转良好。

当我部署到 64 位 Azure 时,我收到以下错误消息。

Unable to load DLL 'gsdll32.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

据我所知,这里有两个问题

  • 该项目不是使用 64 位 GhostScriptSharp.cs 构建的
  • 无论构建如何,gsdll32.dll 或 gsdll64.dll 都不会被复制到正确的文件夹中。

是否有任何建议可以使其在 Azure 部署上运行?

最佳答案

只需在测试站点的 Azure 网站部署上解决此问题。我们仅使用 GhostScriptSharp 来实现缩略图功能,尚未弄清楚如何使用 Ghostscript.NET 执行相同的操作,因为实际示例很少。

该错误消息略有误导性。该文件没有丢失,它只是没有对 DLL 文件所在文件夹(例如您的 BIN 文件夹)的读/写访问权限。

如果您在 VM 上运行,您可以授予对 BIN 文件夹的读/写访问权限(轻微的安全问题),但在免费的 Azure 网站上您没有该控制权。

我们的解决方案是将 gsdll32.dll 和 gsdll64.dll 文件放入 App_Data 文件夹(该文件夹已具有读/写访问权限),并将该文件夹添加到使用 Win32 搜索 DLL 的位置内核SetDllDirectory函数。

例如使用声明它

[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool SetDllDirectory(string lpPathName);

然后,在调用 GhostscriptSharp 方法之前,例如在 Controller 方法中,使用以下命令将 App_Data 文件夹添加到 DLL 搜索路径:

SetDllDirectory(Server.MapPath("~/App_Data/"));

此后它又开始工作了。

关于c# - Azure 上的 GhostScriptSharp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24519908/

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