我有一个ASP.NET MVC 5应用程序,我需要使用Process.Start
在我的Azure网站中调用wkhtml2pdf.exe。当地的工作很好。但似乎我的应用程序停留在Process.Start
行。 Azure上是否支持启动进程?
答案 0 :(得分:10)
wkhtml2pdf.exe
本身特有的。该exe在Windows上使用一堆GDI+
调用来呈现PDF,这是Azure网站沙箱中不允许的(GDI+
调用,而不是运行exe)。
使用WebJob也无济于事,因为WebJobs在与相同沙箱下的网站相同的上下文中运行。
修改强>
如何在Azure网站上启动外部流程,而不是通常使用C#执行外部流程。您面临的问题再次出现在wkhtml2pdf.exe
,而不是启动流程的一般概念。
以下示例可以尝试启动cmd.exe
并读取stdout上写的内容
var processStartInfo = new ProcessStartInfo()
{
Arguments = "/c echo \"test\"",
FileName = @"c:\windows\system32\cmd.exe",
RedirectStandardOutput = true,
UseShellExecute = false
};
var process = Process.Start(processStartInfo);
using (var streamReader = new StreamReader(process.StandardOutput.BaseStream))
{
ViewBag.MessageFromExe = streamReader.ReadToEnd();
}
ViewBag.MessageFromExe
将具有值"test"
,您可以在视图中验证该值,并且可以在Azure网站中正常运行
答案 1 :(得分:0)
您可以使用其他方法执行可在Azure WebApps中运行的PDF生成。请参阅this blog。