【问题标题】:Running an Executable file from an ASP.NET web application从 ASP.NET Web 应用程序运行可执行文件
【发布时间】:2015-09-22 13:44:21
【问题描述】:

我正在尝试创建一个 Web 应用程序,它可以读取用户提供的某些文件(日志),然后使用 Microsoft 的 LogParser 2.2 exe 来解析日志并提供请求的输出。

我的想法是运行用户系统中存在的 Local LogParser.exe,然后使用相同的生成输出来准备我的输出。

我不知道这种方法是否正确,但是我正在尝试做同样的事情,但在某处我的代码没有被正确遵循,我无法找到任何输出/错误。

我的代码段如下:

 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控件可能是前进的方向吗?

感谢所有帮助

((我将其作为我组织的内部应用程序,并且假设日志解析器将存在于正在使用此 Web 应用程序的计算机中)0

谢谢

拉维

【问题讨论】:

  • 所以您希望用户提供文件,然后在上传到服务器之前需要对其进行解析?
  • 没错,我需要日志文件,这些文件将使用用户本地计算机中的日志解析器进行解析,然后我将使用输出。
  • 你不会喜欢这个答案,但你应该上传完整的文件并在服务器上解析它。不要尝试使用客户端上的可执行文件来自动化任何事情。由于非常明显的原因,你不能做你要求的事情。如果可能的话,我可以在你的电脑上做任何我想做的事,只要让你访问我的网站。您不能为他们手动运行的客户端创建一个可执行文件,并在一个过程中进行解析然后上传结果吗?

标签: javascript asp.net iis activex logparser


【解决方案1】:

在您的项目中添加对 Interop.MSUtil 的引用,然后按照帮助文件中的说明使用 COM API。以下 using 语句应该允许您通过代码与 LogParser 进行交互:

使用 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)),因此您可以选择最适合您需要的格式。此外,如果您尚未安装 LogParser,则需要在正在执行的机器上对 LogParser.dll 运行 regsvr。该文档实际上非常适合您入门。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    相关资源
    最近更新 更多