我认为有两种症状是同样的问题。
我已经使用Nuget安装了GhostScriptSharp,并且在Azure开发结构中的32位机加工上本地运行它。一切都运转得很好。
当我部署到Azure (64位)时,我将得到以下错误消息。
无法加载DLL 'gsdll32.dll':找不到指定的模块。(HRESULT例外: 0x8007007E)
如我所知,这里有两个问题
对于Azure部署,有什么建议可以让它发挥作用吗?
发布于 2015-12-23 10:35:23
只是在一个测试站点的Azure网站部署上解决了这个问题。我们只使用GhostScriptSharp的拇指钉功能,还没有弄清楚如何用Ghostscript.NET做同样的工作,因为实际的例子是轻量级的。
错误信息有点误导性。该文件没有丢失,它只是没有对DLL文件所在的文件夹(例如BIN文件夹)的读/写访问权限。
如果您在VM上运行,您可以允许对您的BIN文件夹进行读/写访问(轻微的安全问题),但是在免费的Azure网站上,您没有这个控制。
我们的解决方案是将gsdll32.dll和gsdll64.dll文件放入App_Data文件夹(该文件夹已经具有读/写访问权限),并使用Win32内核SetDllDirectory函数将该文件夹添加到搜索DLL的位置。
例如,使用
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool SetDllDirectory(string lpPathName);然后,在调用GhostscriptSharp方法(例如从控制器方法中)之前,使用以下方法将App_Data文件夹添加到DLL搜索路径:
SetDllDirectory(Server.MapPath("~/App_Data/"));在这之后,它又开始工作了。
发布于 2014-07-02 14:00:19
您可能缺少了一些存在于开发机器上的windows运行时DLL。这些将需要包括在您的部署到Azure。
https://stackoverflow.com/questions/24519908
复制相似问题