代码之家  ›  专栏  ›  技术社区  ›  mclark1129

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

  •  0
  • mclark1129  · 技术社区  · 15 年前

    我正在尝试使用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 回复  |  直到 15 年前
        1
  •  1
  •   Mitchel Sellers    15 年前

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

    您可以使用IIS管理器验证它,以查看它在哪个应用程序池和标识中。

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