私のアプリでは、asp スクリプトから端末コマンドを実行しています。これは、いくつかのパラメーターを指定して PhantomJs を実行し、結果をログに記録します。残念ながら、ファイルへのパスを渡しているため、遅延した Windows 端末ではコマンド全体が長くなりすぎて、input line too long
エラーが発生します。さらに奇妙なのは、制限が 2/8k になるはずだったのに、約 350 文字しかないことです。単一のパラメータの長さにも制限はありますか?
これは、サンプル コマンドを使用した私のコードです。
System.Diagnostics.ProcessStartInfo phantomProcess = new System.Diagnostics.ProcessStartInfo();
phantomProcess.FileName = "cmd";
string command = "/c \"phantomjs 'K:\\LAMP\\www\\2.x\\examples\\ASP.NET MVC2 demo\\ASP.NET MVC\\render.js' 'K:\\LAMP\\www\\2.x\\examples\\ASP.NET MVC2 demo\\ASP.NET MVC\\exportHtml-1570662045.html|K:\\LAMP\\www\\2.x\\examples\\ASP.NET MVC2 demo\\ASP.NET MVC\\exportHtml-1570642318.html|K:\\LAMP\\www\\2.x\\examples\\ASP.NET MVC2 demo\\ASP.NET MVC\\exportHtml-1570648254.html|K:\\LAMP\\www\\2.x\\examples\\ASP.NET MVC2 demo\\ASP.NET MVC\\exportHtml-1570696111.html|K:\\LAMP\\www\\2.x\\examples\\ASP.NET MVC2 demo\\ASP.NET MVC\\exportHtml-1570696111.html|K:\\LAMP\\www\\2.x\\examples\\ASP.NET MVC2 demo\\ASP.NET MVC\\exportHtml-1570669151.html|K:\\LAMP\\www\\2.x\\examples\\ASP.NET MVC2 demo\\ASP.NET MVC\\exportHtml-1570669151.html|K:\\LAMP\\www\\2.x\\examples\\ASP.NET MVC2 demo\\ASP.NET MVC\\exportHtml-1570678096.html'\"";
phantomProcess.Arguments = command;
System.IO.StreamReader sOut = proc.StandardOutput;
phantomOut = sOut.ReadToEnd().Trim();
proc.WaitForExit();
sOut.Close();
このエラー、いくつかのウィンドウ固有のトリックを回避する方法はありますか? 環境変数を使用するいくつかのソリューションを見てきましたが、長い文字列を変数に割り当てると、まったく同じように壊れているようです。タグが間違っていたら訂正してください。
編集
この「機能」に関する MS からの情報をいくつか見つけました: http://support.microsoft.com/kb/830473。彼らは、params をテキスト ファイルに入れ、このファイル名をパラメーターとして渡して目的のアプリを実行することを提案しています。このアプローチを試してみましたが、このように実行すると端末全体がフリーズするようです。