我正在尝试使用System.Diagnostics.Process从命令行在我的ASP.NET应用程序中使用非托管ImageMagick库。基本上,用户会将.eps文件上传到站点,然后我将运行命令行命令将其转换为.jpg。这是我用来尝试运行命令的代码:
Dim proc As New System.Diagnostics.Process
proc.StartInfo.RedirectStandardOutput = True
proc.StartInfo.RedirectStandardError = True
proc.StartInfo.FileName = "C:\Program Files (x86)\ImageMagick-6.6.1-Q16\convert.exe"
proc.StartInfo.UseShellExecute = False
proc.StartInfo.Arguments = String.Format("{0} {1}", Server.MapPath("~/logo/test.eps"), _
Server.MapPath("~/certificates/temp/test-1234.jpg"))
proc.StartInfo.CreateNoWindow = True
proc.Start()
我能够在我们的开发Win 2k3服务器上运行此代码,但不能在我们的生产Win 2k3服务器上运行。我收到错误“System.ComponentModel.Win32Exception:Access is denied”。两台服务器之间的主要是生产是64位并运行Plesk来管理多个域。我已经尝试将权限asp.net用户添加到ImageMagick目录。 PS管理员说,在Plesk的情况下,它与我使用FPE访问VS中的站点的帐户相同。
有谁知道我可能会做什么才能让这个过程在我的生产服务器上运行?
谢谢,
麦克
答案 0 :(得分:1)
您需要确保实际应用程序池标识具有启动应用程序的权限。我相信,当您在服务器上设置时,plesk会为每个域创建一个特定用户。
您可以使用IIS管理器对此进行验证,以查看它所在的应用程序池和标识。
我的猜测是你根本没有为正确的用户授予权限。