Process.Start在Azure网站中

时间:2015-02-03 07:29:05

标签: asp.net asp.net-mvc azure wkhtmltopdf azure-web-sites

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

2 个答案:

答案 0 :(得分:10)

ramiramilu的回答实际上是不正确的。你可以运行你想要的任何exe(check this for example)。你遇到的问题不是运行exe,而是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