我試圖使用非託管ImageMagick庫中使用的System.Diagnostics.Process在命令行中我的ASP.NET應用程序被拒絕。基本上,用戶將上傳一個.eps文件到網站,然後我將運行命令行命令將其轉換爲.jpg。這是我使用的嘗試運行命令代碼:訪問,同時使用的System.Diagnostics.Process
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()
我能夠運行這段代碼就好了我們的發展贏得2K3服務器上,而不是我們的生產運2K3服務器上。我得到錯誤「System.ComponentModel.Win32Exception:訪問被拒絕」。兩臺服務器之間的主要區別在於生產環境爲64位,並運行Plesk來管理多個域。我試過將權限asp.net用戶添加到ImageMagick目錄。 PS Admin表示,就Plesk而言,我使用的是使用FPE訪問VS中的網站的帳戶。
有誰知道我可能會爲了讓這個過程中我的生產服務器上運行嗎?
感謝,
邁克
該訣竅,我發現有一個IWAM_plesk用戶是域的身份。一旦我們向該用戶添加了權限,然後執行該命令。現在我只是遇到了文件權限錯誤,這些錯誤涉及到我們正在嘗試轉換的文件,以及對IM使用的Ghostscript的訪問。我希望有人剛剛編寫了一個.NET庫,可以做同樣的事情:/。 謝謝,雖然。 – mclark1129 2010-05-05 18:05:00
從Web應用程序調用.exe總是很痛苦。如果它不是您實時需要的東西,您可以創建一個可以爲您執行處理的Windows服務,它將爲您提供更標準的權限集,並將您帶出Web環境。 – 2010-05-05 18:14:05