簡體   English   中英

將上傳的文件作為參數傳遞給asp.net C#中的.bat文件

[英]Pass uploaded file as argument to .bat file in asp.net c#

我需要在網站上運行.bat文件,以掃描文件並向用戶生成結果。

以下是完成任務所需的步驟:1.用戶將使用FileUpload工具上載.zip文件。 2.上載的文件將作為.bat文件參數之一傳遞,以便對其進行掃描。 3. .bat文件將掃描.zip文件,然后生成輸出(新文件將添加到共享文件夾中)。

通過將文件上傳到共享位置,我能夠完成第1步。 然后,我將新上載的文件的路徑傳遞到.bat文件,但未顯示任何結果。

我檢查了服務器上的權限,並授予網站所需的訪問權限。 另外,我在服務器上安裝了最新的Java版本,但是沒有運氣。

該代碼在我的本地計算機上可以正常工作,但是每當我將其上傳到服務器時,它都無法正常工作。

string scanFile = @"\\...path..";
string outputLocation = @"\\...path..";
string args = "--project" +name.Text+ "--scan" +scanFile+ "--out" +outputLocation;

//The method that start the process and run .bat file
protected void startP (string path, string args)
{
    Process p = new Process();
    p.StartInfo.FileName = path;
    p.StartInfo.Arguments= args;
    p.StartInfo.UseShellExecute= false;
    p.StartInfo.CreateNoWindow= true;
    p.StartInfo.EnableRaisingEvents= true;
    p.Start();
    p.WaiteForExit();

    if(p.HasExited)
    {
        p.Close();
        // then calling other methods
    }
}

您能幫我找出問題所在嗎? 特別是在我的本地計算機上運行相同的完全相同的代碼並提供所需的輸出,但是當我通過服務器運行它時卻沒有!

注意:* .bat文件已上傳到服務器上

核心問題是我們通常不授予Web服務器為此所需的權利。 Web服務器始終處於打開狀態,因此容易受到24/7黑客攻擊。 結果,它們通常在單獨的用戶下運行,該用戶僅具有對服務器Programm和網頁內容目錄的讀取權限-一點也不多。

執行權和寫權? 人們會撓頭為什么你甚至會要求這樣做,然后適當地遠離程序。 如果您授予網絡服務器“寫”權,您最終將被黑客添加一個腳本,該腳本將通過google到達您網頁的所有人重定向到色情網頁(現實生活中的示例)。

同樣重要的是,這應該在2019年不再需要。.NET在版本4.5中被賦予了ZipArchive類 而.NET核心-后來的發展-從1.0開始就擁有它。 如果您某種程度上缺少它,那么您的情況中確實有些奇怪。 因此,無論如何,您都不需要命令行工具來進行解壓縮。

提供文件以供下載的部分通常是通過將文件存儲在DB中/中進行的 然后在請求時使用HTTP處理程序將其數據分發出去。 同樣,您可以避免任何寫權限需求(或至少將寫內容保留在DB Server中)。

為什么不嘗試在以管理員身份而不是.bat文件運行的Windows Shell腳本中嘗試執行此操作?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM