2011-08-20 7 views
-1

Permet de prendre le scénario, j'ai développé l'application web (ASP.NET MVC) qui montre la liste des fichiers .xml et nous sélectionnons deux .xml fichiers de comparaison et d'utiliser un utilitaire de comparaison comme Beyond Compare 3.Processus travailleur ne fonctionne pas sur IIS 7

Fondamentalement, j'ai un fichier Scrapt (Beyond Compare 3 Script) qui fonctionne sur System.Diagnostic.Process et génère des fichiers de rapport de différence par rapport au script. Je veux utiliser le script dans un processus qui montre un rapport de différence généré à l'exécution. Lorsque j'exécute l'application à partir de Visual Studio, elle fonctionne parfaitement et affiche le fichier de différences attendues, mais lorsque je déploie cette application sur mon serveur Web IIS, elle ne génère pas le fichier de différences et affiche simplement le fichier d'entrée comme fichier de sortie. Voici la méthode qui démarre le processus et génère le fichier de résultat Au-delà de la comparaison en tant que fichier de sortie. Mais le code suivant est en cours d'exécution sur le serveur de développement Visual Studio mais il ne fonctionne pas sur IIS (déploiement de site Web sur le serveur IIS).

public string GenerateSortedXMLFile(string inputfilepath) 
{ 
     string outputfile, inputfile, BCompare, Script; 
     inputfile = inputfilepath; 
     outputfile = ConfigurationManager.AppSettings["MFxmlSortFilePath"]; 
     outputfile = outputfile + System.Guid.NewGuid().ToString() + ".txt"; 
     BCompare = ConfigurationManager.AppSettings["BCompareExe"]; 
     Script = ConfigurationManager.AppSettings["Script"]; 

     Process p = new Process 
     { 
      StartInfo = 
        { 
         FileName = "\"" + BCompare + "\"", 
         Arguments = " " + "\"" + "@" + Script + "\"" + " " + "\"" + inputfile + "\"" + " " + "\"" + outputfile + "\" /grant BUILTIN\\Users:IIS_IUSRS" 
        } 
       }; 

     p.Start(); 
     p.WaitForExit(); 
     p.Close(); 
     return outputfile; 
} 

Répondre

0

Je ne suis pas vraiment sûr, mais je pense qu'une question a été posée sur simialr Stackoverflow.

Si un programme CGI (comme Tigran souligné) ne constitue pas une option pour vous (pour quelle que soit la raison) vous avez deux options:

  1. Par défaut, le pool applicaton de votre site fonctionne uniquement avec l'autorisation limitée . Configurez le pool d'applications de votre site Web pour qu'il s'exécute sous le compte système local. Cependant je fais ne recommande pas cette option pour des raisons de sécurité. Suivez le lien ci-dessus pour un guide étape par étape sur la façon d'accomplir cela.
  2. Ne modifiez pas les paramètres par défaut de votre pool d'applications. Au lieu de cela, créez un service Windows qui héberge un service WCF offrant une méthode de service (par exemple CompareXml) pour l'exécution de votre application console. Depuis votre site Web, appelez la méthode CompareXml de WCF-Service.

Espérons que cela aide.

Questions connexes