2010-05-05 2 views
0

Я пытаюсь использовать неуправляемую библиотеку ImageMagick в своем приложении ASP.NET из командной строки, используя System.Diagnostics.Process. В основном пользователи загружают файл .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 Win, но не на нашем производстве Win 2k3 Server. Я получаю сообщение об ошибке «System.ComponentModel.Win32Exception: доступ запрещен». Главная между двумя серверами заключается в том, что производство является 64-битным и запускает Plesk для управления несколькими доменами. Я попытался добавить права пользователя asp.net в каталог ImageMagick. PS Admin говорит, что в случае Plesk это та же самая учетная запись, которую я использую для доступа к сайту в VS с использованием FPE.

Кто-нибудь знает, что я могу сделать, чтобы этот процесс мог запускаться на моем производственном сервере?

Спасибо,

Майк

ответ

1

Вы должны убедиться, что фактическое удостоверение пула приложений с учетом прав для запуска приложения. Я считаю, что plesk создает конкретного пользователя для каждого домена, как вы его настроили на сервере.

Вы можете проверить это с помощью диспетчера IIS, чтобы увидеть, что пул приложений и личность он находится.

Я думаю, что вы просто не имеют разрешения, предоставленные для правильного пользователя.

+0

Это сделало трюк, я обнаружил, что есть пользователь IWAM_plesk, который является идентификатором для домена. После того как мы добавили разрешения для этого пользователя, команда выполнится. Теперь я просто сталкиваюсь с ошибками прав доступа к файлам, которые мы пытаемся преобразовать, а также с доступом к Ghostscript, который использует IM. Я хочу, чтобы кто-то только что написал .NET-библиотеку, которая сделала то же самое: /. Спасибо, правда. – mclark1129

+0

Это всегда боль, чтобы вызвать .exe из веб-приложения. если это не то, что вам нужно «в режиме реального времени», вы можете создать службу Windows, которая могла бы выполнить обработку для вас, у нее будет более стандартный набор разрешений, доступный для вас, и выведет вас из веб-контекста. –