簡體   English   中英

從外部文件夾加載asp.net dll

[英]Load asp.net dlls from external folder

我在IIS上托管了50個相同的asp.net網站。 諸如WordPress之類的東西,盡管每個網站都具有不同的內容。

C:\inetpub\vhosts\website1.com    
C:\inetpub\vhosts\website2.com
C:\inetpub\vhosts\website3.com
.    
.    
.    
C:\inetpub\vhosts\website50.com

由於這些是ASP.NET網站的完全相同的副本;因此, 我想使用“公用” bin文件夾,這樣我就不會每次都加載50組相同的DLL副本來更新和加載到內存中。

這里的解決方案: 是否可以更改.net mvc bin目錄位置? 我不能將DLL放置在網站文件夾之外,因此不能共享它們。

您應該了解有關IIS和ASP.NET的一些細節。 他們實際上並沒有運行bin文件夾中的文件 相反,他們將bin文件夾中的文件復制到“影子目錄”(類似於“ C:\\ WINDOWS \\ Microsoft.NET \\ Framework \\ v4.5.XXXX \\ Temporary ASP.NET Files”)。 實際上是從那里開始執行它們的。 監視bin文件夾中的所有更改,並根據需要更新影子目錄。 這樣,即使站點正在運行,您也可以部署新的DLL,否則它們將被鎖定。

所以...無論您做什么,操作系統都將加載同一DLL的多個映像,即使您將它們全部使用同一bin文件夾也是如此。 據我所知,沒有辦法將其關閉。

話雖如此,如果您想節省一些磁盤空間並讓您的站點使用公共bin文件夾,請考慮使用符號鏈接 本質上,這使您可以創建一個“指向”另一個目錄的目錄(這種情況在Unix中更為常見)。 因此,最終您會從多個地方訪問一個副本。 請注意:刪除內容時要非常小心,因為您可能會毫無意義地從所有50個站點中刪除文件夾。

但是更好的選擇(取決於為什么要運行50個相同的站點,這是非常不尋常的)是僅運行一個站點,具有一個IP地址,但有多個指向該IP的DNS條目。 這樣,當您只有一個站點時,您將擁有50個站點。 這里的技巧是(如果使用的是https),則必須使用主機標頭來選擇SSL證書,這樣瀏覽器才不會顯示網絡釣魚警告。 或者,如果您的站點是負載平衡的,則可以在負載平衡器處終止SSL(一種稱為SSL offloading的策略),從而甚至不需要IIS級別的證書。

暫無
暫無

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

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