2015-09-22 1 views
0

J'essaie de créer une application Web capable de lire certains fichiers (journaux) fournis par les utilisateurs, puis d'utiliser LogParser 2.2 exe par Microsoft pour analyser les journaux et fournir les sortie demandée. L'idée que j'ai est d'exécuter le LogParser local local présent dans le système Utilisateurs, puis d'utiliser la même sortie générée pour préparer ma sortie. Je ne sais pas si cette approche est correcte, Cependant j'essaie de faire la même chose et quelque part mon code n'est pas suivi correctement et je ne trouve pas de sortie/erreur.Exécution d'un fichier exécutable à partir d'une application Web ASP.NET

Mon segment de code est comme suit:

protected void Button2_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      string fileName = @"C:\Program Files (x86)\Log Parser 2.2\LOGPARSER.exe"; 
      string filename = "LogParser"; 
      string input = " -i:IISW3C "; 
      string query = " Select top 10 cs-ur-stem, count(cs-ur-stem) from " + TextBox1.Text + " group by cs-uri-stem order by count(cs-ur-stem)"; 
      string output = " -o:DATAGRID "; 
      string argument = filename + input + query + output; 
      ProcessStartInfo PSI = new ProcessStartInfo(fileName) 
       { 
        UseShellExecute = false, 
        Arguments = argument, 
        RedirectStandardInput = true, 
        RedirectStandardOutput = true, 
        CreateNoWindow = false 
       }; 
      Process LogParser = Process.Start(PSI); 
      LogParser.Start(); 
     } 
     catch (Exception Prc) 
     { 
      MessageBox.Show(Prc.Message); 
     } 

je pourrais faire quelque chose de mal, mais quelqu'un peut me diriger dans la bonne direction? Le contrôle Javascript ActiveX peut-il être la voie à suivre?

Toute l'aide est appréciée

((je fais comme une application interne pour mon organisation et il est supposé que l'analyseur de journal sera présent dans l'ordinateur cette application Web est utilisé) 0

Merci

Ravi

+0

Vous voulez donc que les utilisateurs fournissent des fichiers, qui doivent ensuite être analysés avant d'être téléchargés sur le serveur? – Archer

+0

Exactement, j'aurai besoin des fichiers journaux, qui seront analysés en utilisant l'analyseur de journal dans l'ordinateur des utilisateurs locaux et ensuite j'utiliserai la sortie. –

+0

Vous n'aimez pas la réponse, mais vous devez télécharger le fichier complet et l'analyser sur le serveur. N'essayez pas d'automatiser quoi que ce soit en utilisant un exécutable sur le client. Vous ne pouvez pas faire ce que vous demandez pour des raisons très évidentes. Si c'était possible alors je pourrais faire tout ce que je veux sur votre PC juste en vous incitant à visiter mon site Web. Ne pourriez-vous pas créer un exécutable pour les clients qu'ils exécutent manuellement et il effectue l'analyse, puis télécharge les résultats, le tout en un seul processus? – Archer

Répondre

0

Ajouter une référence à Interop.MSUtil dans votre projet, puis utiliser l'API COM comme décrit dans le fichier d'aide. Voici les déclarations à l'aide devraient vous permettre d'interagir avec LogParse r via votre code:

en utilisant LogQuery = Interop.MSUtil.LogQueryClass; en utilisant FileLogInputFormat = Interop.MSUtil.COMTextLineInputContextClass;

Ensuite, vous pouvez faire quelque chose comme:

var inputFormat = new FileLogInputFormat(); 

// Instantiate the LogQuery object 
LogQuery oLogQuery = new LogQuery(); 

var results = oLogQuery.Execute(yourQuery, inputFormat); 

Vous avez accès à un tas de formats d'entrée prédéfinis et les formats de sortie (comme IIS et W3C)), de sorte que vous pouvez choisir celui qui convient le mieux à vos besoins . En outre, vous devrez exécuter regsvr sur LogParser.dll sur la machine sur laquelle vous exécutez si vous n'avez pas installé LogParser. Le doc est en fait assez bon pour vous aider à démarrer.