在Azure App Service中的ASP.NET核心中运行Phantomjs.exe

时间:2017-12-05 11:18:46

标签: c# azure asp.net-core phantomjs asp.net-core-webapi

我在.Net Core 2.0.0中实现了一个ReSTful API,并在Azure中的App Service中托管。

我正在尝试让其中一个控制器使用PhantomJS.exe生成PDF文件

所以我创建了这个方法

控制器摘要是

        System.Diagnostics.Process pProcess = new System.Diagnostics.Process();
        pProcess.StartInfo.FileName = config.pjlocation;
        pProcess.StartInfo.Arguments = ....; //argument
        pProcess.StartInfo.UseShellExecute = false;
        pProcess.StartInfo.RedirectStandardOutput = true;
        pProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
        pProcess.StartInfo.CreateNoWindow = true; //not diplay a windows
        pProcess.Start();
        output = pProcess.StandardOutput.ReadToEnd(); //The output result
        pProcess.WaitForExit();

当我使用

在本地运行我的控制器时,这很有效
dotnet run

在具有相同版本的.Net Core的Windows机器上,与azure使用的版本相同。

但是在部署到azure时点击API,该服务很长时间都无法产生任何响应并返回此错误

  

指定的CGI应用程序遇到错误和服务器   终止了这个过程。

我发现一些痕迹的唯一地方是azure中的实时日志流,其中HTML由azure转储到控制台

  

HTTP错误502.3 - 错误网关指定的CGI应用程序   遇到错误,服务器终止了该过程。

这里发生了什么,有没有人遇到过类似的问题?我该如何进一步调试?

error

1 个答案:

答案 0 :(得分:2)

您可以在Azure WebApp上获得Azure Web App sandbox PhantomJS 不支持的答案。

  

不支持的其他方案

     

PhantomJS / Selenium:尝试连接到本地地址,并使用 GDI +

根据Azure Web App sandbox,支持以下PDF生成器。如果WebApp不是唯一的选择,您可以参考Azure cloudservie or Azure VM.

  

SQL报告框架:要求网站以Basic或更高版本运行(不是说这当前不能运行功能应用程序)

     

EVOPDF :有关供应商解决方案,请参阅http://www.evopdf.com/azure-html-to-pdf-converter.aspx

     

Telerik报告:要求网站以Basic或更高版本运行。更多信息在这里

     

Rotativa / wkhtmltopdf:要求网站在基本版或更高版本中投放。

     

NReco PdfGenerator(wkhtmltopdf):要求订阅计划基本或更高