Process.Start 在 Azure 网站中

Process.Start in Azure Website

我有一个 ASP.NET MVC 5 应用程序,我需要使用 Process.Start 在我的 Azure 网站中调用 wkhtml2pdf.exe。本地一切正常。但我的应用程序似乎停留在 Process.Start 行。 Azure 是否支持启动进程?

ramiramilu 的回答其实是不正确的。您可以 运行 任何您想要的 exe (check this for example)。您遇到的问题不在 运行 exe 中,而是 wkhtml2pdf.exe 本身特有的问题。该 exe 在 Windows 上使用一堆 GDI+ 调用来呈现 PDF,这是 Azure 网站沙箱中不允许的(GDI+ 调用,而不是 运行ning 一个 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 Websites

中就可以了

您可以使用另一种方法生成 PDF,该方法可在 Azure WebApps 中使用。参见 this blog