2010-05-05 78 views
0

我試圖使用非託管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中的網站的帳戶。

有誰知道我可能會爲了讓這個過程中我的生產服務器上運行嗎?

感謝,

邁克

回答

1

你需要確保實際的應用程序池標識被賦予的權利來啓動應用程序。我相信,當您在服務器上設置它時,plesk會爲每個域創建一個特定用戶。

您可以使用IIS管理器,看看它是什麼應用程序池和身份驗證這一點。

我的猜測是,你根本就沒有授予正確的用戶權限。

+0

該訣竅,我發現有一個IWAM_plesk用戶是域的身份。一旦我們向該用戶添加了權限,然後執行該命令。現在我只是遇到了文件權限錯誤,這些錯誤涉及到我們正在嘗試轉換的文件,以及對IM使用的Ghostscript的訪問。我希望有人剛剛編寫了一個.NET庫,可以做同樣的事情:/。 謝謝,雖然。 – mclark1129 2010-05-05 18:05:00

+0

從Web應用程序調用.exe總是很痛苦。如果它不是您實時需要的東西,您可以創建一個可以爲您執行處理的Windows服務,它將爲您提供更標準的權限集,並將您帶出Web環境。 – 2010-05-05 18:14:05