C# 在WebApp中启动进程时PhantomJS不工作

C# 在WebApp中启动进程时PhantomJS不工作,c#,asp.net,phantomjs,C#,Asp.net,Phantomjs,我有一个C方法,它启动phantomJS.exe进程,将路径传递到JS文件和url,以获取该url的html。当从Owin中启动的WebAPI操作方法调用时,这一切都很好 现在,我创建了一个单独的ASP.NET WebApp空项目,使用IIS express并向其中添加了一个HttpModule。来自HttpModule的调用返回空数据。你知道为什么会这样吗?我已经确认该类可以从该方法发出http调用 从cmd,我已经导航到这个项目的bin文件夹,并使用这些参数运行phantomjs,并成功地得

我有一个C方法,它启动phantomJS.exe进程,将路径传递到JS文件和url,以获取该url的html。当从Owin中启动的WebAPI操作方法调用时,这一切都很好

现在,我创建了一个单独的ASP.NET WebApp空项目,使用IIS express并向其中添加了一个HttpModule。来自HttpModule的调用返回空数据。你知道为什么会这样吗?我已经确认该类可以从该方法发出http调用

从cmd,我已经导航到这个项目的bin文件夹,并使用这些参数运行phantomjs,并成功地得到了结果

有什么想法吗

HttpModule调用者:

private void Application_EndRequest(object sender, EventArgs e)
{
    var application = (HttpApplication)sender;
    HttpContext context = application.Context;

    context.Response.ClearContent();

    var service = new GetRenderedHtmlForUrlService();
    var result = service.GetHtml("http://www.example.com/");
    context.Response.Write(result);
}
幻影跑步者:

public string GetHtml(string url)
{
    var outputBuilder = new StringBuilder();

    var processStartInfo = new ProcessStartInfo();
    processStartInfo.CreateNoWindow = true;
    processStartInfo.RedirectStandardOutput = true;
    processStartInfo.RedirectStandardInput = true;
    processStartInfo.UseShellExecute = false;
    processStartInfo.Arguments = "Seo\\echo-html.js " + url;
    processStartInfo.FileName = @"phantomjs.exe";

    var process = new Process();
    process.StartInfo = processStartInfo;
    process.EnableRaisingEvents = true;

    process.OutputDataReceived += new DataReceivedEventHandler
    (
        delegate(object sender, DataReceivedEventArgs e)
        {
            //e.Data is always null when called from my webapp
            if (string.IsNullOrWhiteSpace(e.Data)) return;

            outputBuilder.Append(e.Data);
        }
    );

    var started = process.Start();
    process.BeginOutputReadLine();
    process.WaitForExit();

    process.CancelOutputRead();
    process.Kill();
    return outputBuilder.ToString();
}

更新:更多可能有帮助的信息:没有例外。我已检查process.StandardError,它是空的。PhantomJS在PATH中,以这种方式在命令行中使用它。

-1:有几个问题与从ASP.Net和PhantomJS运行进程有关,特别是在这个站点上。请检查相关问题,并在您的帖子中添加更多信息:您看到的异常、流程输出、当前工作目录和到PhantomJS的绝对路径、权限……Alexei,我已经先查看了其他相关问题,但它们没有帮助。我已经添加了更多的信息,希望他们能有所帮助。如果你愿意帮忙的话,可以在快速否决之前要求澄清。最好删除否决。也检查错误输出-BeginErrorReadLine/ErrorDataReceivedwhere您在GetHtml中返回了什么吗?糟糕!他错过了回程线。现在补充说。