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