我在.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应用程序 遇到错误,服务器终止了该过程。
这里发生了什么,有没有人遇到过类似的问题?我该如何进一步调试?
答案 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):要求订阅计划基本或更高