使用System.Diagnostics.Process时拒绝访问

时间:2010-05-05 15:22:58

标签: asp.net process windows-server-2003 file-permissions

我正在尝试使用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中的站点的帐户相同。

有谁知道我可能会做什么才能让这个过程在我的生产服务器上运行?

谢谢,

麦克

1 个答案:

答案 0 :(得分:1)

您需要确保实际应用程序池标识具有启动应用程序的权限。我相信,当您在服务器上设置时,plesk会为每个域创建一个特定用户。

您可以使用IIS管理器对此进行验证,以查看它所在的应用程序池和标识。

我的猜测是你根本没有为正确的用户授予权限。