例外:字符串文件名太长(进程)

时间:2013-12-20 04:01:45

标签: c# asp.net asp.net-mvc phantomjs

我使用下面的代码将参数传递给进程

 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字符串,但是它引发了一个异常,说字符串文件名太长,所以我创建了一个文本文件并尝试传递它,但图表图像没有生成。

1 个答案:

答案 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

等常量路径进行测试