背景:
我正在尝试使用这个phantomjs 工具将 SVG 光栅化为 PNG。当我自己手动运行 EXE 时它可以工作,但我无法通过 C# 中的方法使其工作。我什至设置了断点以确保我的路径和参数是正确的。
该方法首先将 SVG 保存到file:///C:/SVG/
- 它成功地做到了这一点。然后我尝试运行位于我的 ASP.NET 项目中的 EXE(该工具使用的 .js 文件也在那里)。如果您检查上面的链接,EXE 会像这样运行:phantomjs.exe rasterize.js [source] [destination]
. 所以我的源是新创建的 SVG 文件,我的目标是 ASP.NET 项目中的一个文件夹 - 与 EXE 所在的文件夹相同。我猜这与 Server.MapPath 或 IIS 权限有关,但我难住了。
这是代码:
// the EXE and the .js file are both located in 'ProjectRoot/Utilities/'
// filename is the newly created SVG file - 'whatever.svg'
string filepath = "C:/SVG/";
string serverPath = Server.MapPath("/Utilities/");
string args = " rasterize.js " + Path.Combine("file:///", filepath, filename) + " " + filename.Replace(".svg", ".png");
Process p = Process.Start(new ProcessStartInfo(serverPath + "phantomjs.exe", args));
p.WaitForExit(3000);
运行它不会引发异常,只是无法创建 PNG 文件。当我调试并获取值并自己运行该工具时,它工作正常。我能做些什么来缩小问题的范围?