2015年6月24日 星期三

IIS 7以上如何執行執行檔 exe, bat

參考文件:Foo.cmd won't output lines in process (on website)
                    System.Diagnostics.Process does not work on IIS 7

目前有個需求需要在 Asp.net MVC網頁上按個連結就可以直接把標籤列印出來,所以要使用 Process這個類別

寫法大同小異,如下
                      string command = string .Format("tscgin.exe {0} {1}", "mo_print.ini", fileName);
                   
                    Process p = new Process();
                    // Redirect the output stream of the child process.
                    p.StartInfo.UseShellExecute = false;
                    p.StartInfo.RedirectStandardOutput = true;
                   p.StartInfo.WorkingDirectory = "c:\somewhere"
                    p.StartInfo.FileName =  "cmd.exe";
                    p.StartInfo.Arguments = "/c " + command;
                    p.Start();
                   string output = p.StandardOutput.ReadToEnd();

                    p.WaitForExit();


但在 IIS和本機(或 Server)目錄需要設定權限的動作,如下
  1. 建一個新目錄存放 exe or bat file,並設定權限 NetworkService或建立一個帳號具有執行、寫入、讀取
  2. 至 IIS 找出應用程式的 Application Pool後點選"進階應用",找到 "識別"選項,使用者選擇 NetworkService或你自己建立的新帳號即可

沒有留言:

張貼留言