2010-05-05 5 views
0

J'essaie d'utiliser la bibliothèque ImageMagick non managée dans mon application ASP.NET à partir de la ligne de commande à l'aide de System.Diagnostics.Process. Fondamentalement, les utilisateurs vont télécharger un fichier .eps sur le site, puis je vais exécuter la commande en ligne de commande pour le convertir en .jpg. Voici le code que je utilise pour essayer de lancer la commande:Accès refusé lors de l'utilisation de 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() 

Je suis en mesure d'exécuter ce code très bien sur notre développement Win serveur 2k3, mais pas sur notre production Win 2k3 Server. Je reçois l'erreur "System.ComponentModel.Win32Exception: l'accès est refusé". Le principal entre les deux serveurs est que la production est 64 bits et exécute Plesk pour gérer plusieurs domaines. J'ai essayé d'ajouter des droits utilisateur asp.net dans le répertoire ImageMagick. L'administrateur PS dit que dans le cas de Plesk, c'est le même compte que j'utilise pour accéder au site dans VS en utilisant FPE.

Est-ce que quelqu'un sait ce que je pourrais faire pour permettre à ce processus de fonctionner sur mon serveur de production?

Merci,

Mike

Répondre

1

Vous devez vous assurer que l'identité du pool d'application réelle est donnée le droit de démarrer l'application. Je crois que plesk crée un utilisateur spécifique pour chaque domaine lorsque vous le configurez sur le serveur.

Vous pouvez valider cette aide du gestionnaire IIS pour voir ce pool d'applications et de l'identité est en.

Je suppose que vous n'avez tout simplement pas les autorisations accordées à l'utilisateur correct.

+0

Cela a fait l'affaire, j'ai trouvé qu'il y a un utilisateur IWAM_plesk qui est l'identité pour le domaine. Une fois que nous avons ajouté des autorisations à cet utilisateur, la commande a été exécutée. Maintenant, je suis juste en train de courir dans les erreurs de permissions de fichiers traitant des fichiers que nous essayons de convertir, ainsi que l'accès à Ghostscript, que IM utilise. Je souhaite que quelqu'un vient d'écrire une bibliothèque .NET qui a fait la même chose: /. Merci, cependant. – mclark1129

+0

Il est toujours difficile d'appeler un fichier .exe depuis une application Web. Si ce n'est pas quelque chose dont vous avez besoin "en temps réel", vous pouvez créer un service Windows qui pourrait faire le traitement pour vous, il aurait un ensemble d'autorisations plus standard à votre disposition et vous sortir du contexte web. –

Questions connexes