【问题标题】:Access Denied while using System.Diagnostics.Process使用 System.Diagnostics.Process 时访问被拒绝
【发布时间】:2011-02-16 00:01:36
【问题描述】:

我正在尝试使用 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:访问被拒绝”。两个服务器之间的主要是生产是 64 位的,并且运行 Plesk 来管理多个域。我尝试将权限 asp.net 用户添加到 ImageMagick 目录。 PS 管理员说,在 Plesk 的情况下,它与我使用 FPE 在 VS 中访问站点的帐户相同。

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

谢谢,

迈克

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 成功了,我发现有一个 IWAM_plesk 用户是域的身份。一旦我们为该用户添加了权限,那么命令就会执行。现在,在处理我们尝试转换的文件以及访问 IM 使用的 Ghostscript 时,我遇到了文件权限错误。我希望有人刚刚编写了一个做同样事情的 .NET 库:/。不过,谢谢。
    • 从 Web 应用程序调用 .exe 总是很痛苦。如果它不是您需要“实时”的东西,您可以创建一个 Windows 服务来为您进行处理,它将为您提供更标准的权限集并将您带出 Web 上下文。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 2020-05-05
    相关资源
    最近更新 更多