2010-11-15 32 views
3

以下代碼非常簡單,它在控制檯應用程序中起作用。但由於某種原因,它不適用於WCF服務。具有批處理文件的目錄具有完全權限。有人能幫我嗎?我錯過了什麼?運行批處理文件的C#代碼在控制檯應用程序中工作,但是相同的代碼在WCF服務中不起作用

try 
     { 
      ProcessStartInfo psi = new ProcessStartInfo(); 

      //specify the name and the arguements you want to pass 
      psi.FileName = ConfigurationManager.AppSettings["BatchFileLocation"]; 
      psi.Arguments = filePath; 

      //Create new process and set the starting information 
      Process p = new Process(); 
      p.StartInfo = psi; 

      //Set this so that you can tell when the process has completed 
      p.EnableRaisingEvents = true; 

      p.Start(); 

      //wait until the process has completed 
      while (!p.HasExited) 
      { 
       System.Threading.Thread.Sleep(1000); 
      } 

      //check to see what the exit code was 
      if (p.ExitCode != 0) 
      { 
       logger.Write(p.ExitCode); 
      } 
     } 
     catch (Exception ex) 
     { 
      logger.Write(ex.Message); 
     } 
+1

你能定義'不行'嗎? – 2010-11-15 23:17:58

+0

是的,有什麼不行?你有例外嗎? – Alxandr 2010-11-15 23:24:05

+0

批處理文件通過SFTP將文件發送到不同的網絡位置。如果我從命令行(cmd.exe)運行批處理文件,它運行良好,文件傳輸成功。 當我從控制檯應用程序運行批處理文件時,批處理文件被執行並且文件傳輸正常。但從WCF服務它返回exitcode 1.我不能看到消息出現在命令行上,因爲批處理命令執行,因爲控制檯窗口不會從WCF服務執行時彈出。如果它的控制檯C#應用程序控制臺窗口彈出&我可以看到出現的消息中的錯誤。 – 2010-11-16 16:08:46

回答

0

我假設這是一個IIS託管WCF服務。

檢查與您的應用程序池相關的身份。

在我所知的IIS 7和6.0中,這是NetworkService,它可能有權或無權批處理文件,SFTP等。在7.5中有另一個帳戶:Default Application Pool ID Changed in IIS 7.5。您的池也有可能使用其他帳戶,包括特定於計算機的帳戶,而不是域帳戶。

相關問題