我使用下面的代码将参数传递给进程
ProcessStartInfo StartInfo = new ProcessStartInfo();
StartInfo.FileName = HttpContext.Current.Server.MapPath(@"\highcharts\phantomjs.exe");
StartInfo.Arguments = HttpContext.Current.Server.MapPath(@"\highcharts\highcharts-convert.js");
StartInfo.Arguments += @" -outfile " + path + @"\chart" + templateData[i].ReportTemplateChartId + ".png -width 800 -infile " + chartoptions1;
StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
StartInfo.CreateNoWindow = false;
在chartoptions1
中我使用的是JSON字符串,但是它引发了一个异常,说字符串文件名太长,所以我创建了一个文本文件并尝试传递它,但图表图像没有生成。
答案 0 :(得分:0)
来自this MSDN页面,
在Windows Vista和早期版本的Windows上运行 system,参数的长度加到full的长度 进程的路径必须小于2080.在Windows 7及更高版本上 版本,长度必须小于32699。
您是否检查了StartInfo.Arguments
的长度?
另一方面,快速浏览一下Github上的这个wiki页面,
-infile:要转换的文件,假定它是一个JSON文件,脚本检查输入文件是否具有扩展名'.json',或者 否则它假定它是一个svg文件。
因此,-infile
应该是文件而不是JSON内容。我认为您的chartoptions1
非常大,因此您的错误消息 string filename太长。
Highcharts也可以检查infile路径的长度(256?)
正在运行的脚本应该至少具有对infile的读访问权,并且应该是可解析的;特别是如果您没有指定工作目录,则必须添加带有infile的完整路径,而不仅仅是文件名。
要调试工作目录问题,只需使用c:\test