C# 在Azure应用程序服务的ASP.NET核心中运行Phantomjs.exe
我在.Net Core 2.0.0中实现了一个ReSTful API,并托管在Azure的应用程序服务中 我试图让其中一个控制器使用PhantomJS.exe生成PDF文件 所以我创建了这个方法 控制器的摘要如下所示C# 在Azure应用程序服务的ASP.NET核心中运行Phantomjs.exe,c#,azure,asp.net-core,phantomjs,asp.net-core-webapi,C#,Azure,Asp.net Core,Phantomjs,Asp.net Core Webapi,我在.Net Core 2.0.0中实现了一个ReSTful API,并托管在Azure的应用程序服务中 我试图让其中一个控制器使用PhantomJS.exe生成PDF文件 所以我创建了这个方法 控制器的摘要如下所示 System.Diagnostics.Process pProcess = new System.Diagnostics.Process(); pProcess.StartInfo.FileName = config.pjlocation;
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
在与azure使用的.Net Core版本相同的windows计算机上
但是,当部署到azure时,该服务在很长一段时间内无法生成任何响应,并返回此错误
指定的CGI应用程序遇到错误,服务器
终止进程
我发现一些痕迹的唯一地方是azure中的实时日志流,其中一个HTML被azure转储到控制台中
HTTP错误502.3-指定CGI应用程序的网关错误
遇到错误,服务器终止了进程
这里发生了什么?有人遇到过类似的问题吗?如何进一步调试
你可以从以下方面得到答案:PhantomJS在Azure WebApp上不受支持 其他不受支持的方案: PhantomJS/Selenium:尝试连接到本地地址,并使用GDI+ 根据,支持以下PDF生成器。如果WebApp不是唯一的选择,您可以参考 SQL Reporting framework:要求站点在Basic或更高版本中运行(这并不是说当前无法运行) EVOPDF:有关供应商解决方案,请参阅 Telerik reporting:要求站点以Basic或更高版本运行。更多信息请点击这里 Rotativa/wkhtmltopdf:要求站点运行在基本或更高版本。 NReco PdfGenerator(wkhtmltopdf):需要订阅计划基本或更高版本
请注意,我已经检查了所有路径是否正确解析。如果路径不正确,我会收到有意义的错误。您检查过Azure级别日志吗?可以在Azure门户中找到它们。您是否添加了应用程序洞察?这也确实有助于调试。使用Linux workers部署到应用程序服务(自带容器)。Windows风格的应用程序服务不允许您绑定到任意端口,这正是PhantomJS试图做的事情,但失败了-@evisnobu切换到Linux似乎太费劲,风险太大。我可能会尝试其他声称支持的pdf生成器。助教