簡體   English   中英

使用ASP.net在IIS上創建虛擬目錄的正確方法

[英]Proper way of creating virtual directories on IIS using ASP.net

我正在開發ASP.NET Web Api,並且我想在要在其中存儲應用程序生成的報告/日志的服務器上添加要創建的目錄(讓我們說“導出”)。

我被告知“導出”目錄應該是一個虛擬目錄,以便服務器管理員可以輕松地更改存儲文件的物理路徑。 現在我不確定如何處理此問題的正確方法。

我實現它的方法是在項目中創建目錄,在其中放置一個虛擬文件,然后在發布期間在服務器上創建它。 但是我不知道這是否是在服務器上創建應用程序文件夾的適當方法,也不確定應該應用的訪問限制。

此外,此方法創建相對於應用程序根目錄的物理路徑,並且使其變為虛擬狀態的唯一方法是從IIS服務器應用程序池管理器手動添加具有相同別名的虛擬目錄。

因此,我想知道在服務器上創建和管理虛擬目錄的正確方法是什么。 誰負責創建和管理訪問權限?

應用程序應在部署時創建它,還是要求管理員使用服務器應用程序池管理面板手動創建?

編輯:

找到了一種方法,只是不確定它是否優雅或安全。 正如我已經提到的,我在發布期間創建了一個空的“導出”目錄(MyWebApi / exports)。 我的應用嘗試使用MapPath和Directory Classes訪問該目錄:

if(Directory.Exists(System.Web.Hosting.HostingEnvironment.MapPath($"~/exports/")))
{
    Console.WriteLine("Export directory exists on server!");
}

因此,如果在Web部署過程中沒有出錯,則“ exports”目錄存在於應用程序根目錄下,我可以將文件保存在該目錄中。

現在,如果服務器管理員想要更改導出目錄的物理路徑並將其放置在服務器上的另一個磁盤上,則可以轉到IIS管理器,右鍵單擊應用程序->添加虛擬目錄->輸入“導出” ”作為別名,以及將其用作物理路徑所需的任何內容。 請注意,別名必須與發布期間創建的別名完全相同。

現在,我已經對此進行了測試,並提供了對新物理目錄的適當權限,它應該可以正常工作。 但是我不知道這只是猴子補丁還是合適的解決方案。

最好的選擇是讓某人手動創建虛擬目錄。 否則,您網站的代碼將必須具有修改IIS的權限以及在應用程序路徑的根級別的寫入權限。 向這些應用程序授予任何一種權限都會帶來安全風險。 該文件夾只需設置一次。 保持簡單!

您可以使用虛擬目錄方法-很好,它使您不必在web.config中放置靜態路徑。 但是,如果可以避免,請不要將虛擬路徑( ~/somefolder )硬編碼到代碼中-請將其保留在配置文件中,以便在部署后可以對其進行修改。

暫無
暫無

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

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