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。
我有一个 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。