2016-04-04 101 views
0

我在Windows Server 2012的IIS8上託管了一個asp.net應用程序。 此應用程序假設要執行批處理文件。IIS 8(windows server 2012)無法運行批處理文件

它工作完美,如果我在調試模式下執行與Visual Studio的應用程序。但是當我將它上傳到IIS時,應用程序無法執行批處理文件。

我試圖用exe文件更改批處理文件。同樣的問題。

假設從應用程序(WCF應用程序)執行,在IIS中的批處理文件:

System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
       proc.StartInfo.WorkingDirectory = @"C:\path"; 
       proc.StartInfo.FileName = @"C:\path\executer.bat"; 
       proc.Start(); 
       proc.Close(); 

請大家幫忙,

+0

您需要提供更多關於該批處理文件應該如何執行的更多細節。它是從ASP.NET頁面調用的嗎?它可能是Web服務的一部分嗎?這裏沒有足夠的空間讓我們提供很多幫助。 –

+0

我增加了更多細節。 –

+1

如果你確定批處理文件沒有被觸發,那麼我會在啓動它的代碼周圍放置一些try-catch塊,並試圖建立一些記錄信息。在服務器上,您很可能會處理權限問題,其中運行站點的帳戶上下文無法訪問批處理文件主機路徑。 –

回答

0

最有可能遇到的問題是由於權限。您需要檢查您的應用程序正在運行的IIS應用程序池的帳戶是否已配置,以及該帳戶是否有權運行批處理文件或該批處理文件中的命令。

在Visual Studio中運行時,您可能會以交互式用戶的身份運行IIS Express。

在默認情況下在IIS下運行時,您正在運行ApplicationPoolUser身份,該身份沒有執行代碼的權限,沒有文件訪問權限或其他任何權限。除非您明確設置了具有對批處理文件的適當文件訪問權限的其他帳戶以及在批處理文件內執行命令的權限,否則您將無法從IIS內運行批處理文件。要將該應用程序池用戶標識的更改更改爲對讀取和執行磁盤上的批處理文件具有權限的用戶,並且具有運行批處理文件中正在執行的內容所需的任何權限。

-1

你的代碼工作正常。可能有在批處理文件中的一些問題,我面對前。我的批處理文件是

start "" BATCHLOG.exe 

其中BATCHLOG.exe

有些時候,批處理文件命名爲唯一

BATCHLOG.exe可執行

在Windows調度程序上無法正常工作,所以可能在您的情況下

0

確保您的應用程序訪問的任何文件夾或文件具有授予AppPoolUser帳戶的權限。查看應用程序資源文件夾也很重要。例如,如果您正在編寫日誌,請確保給appPool用戶帳戶足夠的權限以寫入該文件。