実現したいこと
・現在、VisualStudioのデバックモードで(ASP.Netサーバー)で、
ProcessStartInfoを使用してコマンドプロンプトを起動が出来ていることを確認済。
上記をIISサーバーで実施したところ、動作が上手くいかないので、
コマンドプロンプトが正しく起動しているのか、コマンドプロンプトの命令でコケているのか等を
判断するために、Logに出力したい。
前提
C#でアップロードした.xlsxファイルを、batを用いてcsvファイルに変換し、
そのCSVファイルを使用して、内容のエラーチェック等をする機能を作成しています。
該当のソースコード
C#
1ProcessStartInfo ps = new ProcessStartInfo("cmd.exe" , "ExcelファイルをCSVに変換するbatを使用するコマンド文") 2 3ps.CreateNoWindow = true; 4ps.UseShellExecute = false; 5ps.RedirectStandardOutput = true; 6 7Process process = Process.Start(ps) 8string msg = process.StandardOutput.ReadToEnd(); 9process.WaitForExit(); 10process.Close(); 11 12Console.WriteLine(msg);
試したこと
RedirectStandardOutput、RedirectStandardErrorなどで動作確認をしてみたのですが、
msgに入る値が空文字となっていました。
想定ではmsgにログに近しい物が入っていると思っていましたが、上手くいきませんでした。
process.StandardOutput.ReadToEnd()の実行タイミングが早すぎる。
ということはありませんか?
デバックモードで起動し、
Process process = Process.Start(ps)の次のステップで待機、ExcelのCSV変換が終わっていることを確認して処理を進めても空文字で出力されていましたので、早すぎる可能性は薄いと思われます。
バッチファイル内でリダイレクトなりしてログを落とすとかはできないのですか?
そもそも、IISサーバー上でコマンドプロンプトが起動していない可能性が高いので、バッチファイルはノータッチでした。
バッチについては詳しくないので調査してログを落とす方法を確認してみます。

回答1件
あなたの回答
tips
プレビュー