2013-12-20 4 views
1

Я использую следующий код, чтобы передать аргумент в процессИсключения: строка файла слишком длинный (процесс)

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

попробовать с 'StartInfo.UseShellExecute = правда,' также вы можете установить 'StartInfo.WorkingDirectory = HttpContext.Current.Server.MapPath (@ "\ highcharts"); 'и затем' StartInfo.FileName = "phantomjs.exe"; ' – Damith

+0

по умолчанию StartInfo.UseShellExecute = true; и нам нужно установить StartInfo.WorkingDirectory = HttpContext.Current.Server.MapPath (@ "\ highcharts"); , когда у нас нет точного пути –

ответ

0

С this MSDN страницы,

В Windows Vista и более ранние версии Windows, операционная системы, длина аргументов добавленных к длине полного пути к процессу должна быть меньше, чем 2080 . в Windows 7 и более поздние версии , длина должна быть меньше, чем 32699.

вы проверяли длину StartInfo.Arguments?

С другой стороны, быстрый взгляд на эту wiki страницу на Github,

-infile: Файл для преобразования, принимает это либо JSON файл, скрипт проверяет для входного файла, чтобы иметь extension '.json', или , иначе он предполагает, что это файл svg.

Таким образом, -infile должен быть файлом, а не содержимым JSON. Я полагаю, что ваш chartoptions1 довольно большой, поэтому у вас есть сообщение об ошибке string filename too long.

Highcharts может также проверить длину входной_файл пути (256?)

Ходовой скрипт должен иметь по крайней мере, доступ для чтения к INFILE и должен быть разрешимым; особенно если вы не указали рабочий каталог, вам нужно добавить полный путь с помощью infile, а не только с именем файла.

Для отладки проблема рабочего каталога, просто проверить с постоянная путем, такими как c:\test

Смежные вопросы