2015-09-22 4 views
0

Я пытаюсь создать веб-приложение, которое может считывать определенные файлы (журналы), предоставленные пользователями, а затем использовать приложение LogParser 2.2 exe от Microsoft для анализа журналов и предоставления запрошенный выход.Выполнение исполняемого файла из веб-приложения ASP.NET

Идея, которую я имею, заключается в том, чтобы запустить локальный файл LogParser.exe, присутствующий в системе Users, а затем использовать тот же сгенерированный вывод для подготовки моего вывода.

Я не знаю, правильно ли этот подход, но я пытаюсь сделать то же самое, и где-то мой код неправильно соблюдается, и я не могу найти какой-либо вывод/ошибку.

Мой сегмент кода выглядит следующим образом:

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); 
     } 

я мог бы сделать что-то неправильно, но может кто-то мне точку в правильном направлении? Может ли Javascript ActiveX контролировать путь вперед?

Все помощь ценится

((я делаю это как внутреннее приложение для моей организации, и предполагается, что лог-анализатор будет присутствовать в компьютере используется это веб-приложение) 0

Благодаря

Ravi

+0

Итак, вы хотите, чтобы пользователи поставляли файлы, которые затем нужно разбирать перед загрузкой на сервер? – Archer

+0

Точно, мне понадобятся файлы журнала, которые будут проанализированы с помощью Log Parser на локальном компьютере пользователей, а затем я буду использовать вывод. –

+0

Вам не понравится ответ, но вы должны загрузить полный файл и проанализировать его на сервере. Не пытайтесь автоматизировать что-либо с помощью исполняемого файла на клиенте. Вы не можете делать то, о чем вы просите по очень очевидным причинам. Если бы это было возможно, я мог бы сделать все, что захочу, на вашем ПК, просто запустив вас на мой сайт. Не могли бы вы создать исполняемый файл для клиентов, которые они запускают вручную, и он выполняет синтаксический анализ, а затем загружает результаты, все в одном процессе? – Archer

ответ

0

Добавить ссылку на Interop.MSUtil в проекте, а затем использовать COM API, как описано в файле справки. следующие с помощью заявления позволит вам взаимодействовать с LogParse r через ваш код:

using LogQuery = Interop.MSUtil.LogQueryClass; с использованием FileLogInputFormat = Interop.MSUtil.COMTextLineInputContextClass;

Затем вы можете сделать что-то вроде:

var inputFormat = new FileLogInputFormat(); 

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

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

У вас есть доступ к связке предопределенных форматов входных и выходных форматов (например, IIS и W3C)), так что вы можете выбрать тот, который наилучшим образом соответствует вашим потребностям , Кроме того, вам нужно будет запустить regsvr на LogParser.dll на компьютере, на котором вы выполняете, если вы не установили LogParser. Док действительно хорош, чтобы вы начали.

Смежные вопросы