2011-05-31 79 views
2

我有一個ASP.NET MVC 3應用程序,駐留在IIS下可以說localhost/myapp如何強制ASP.NET完全忽略虛擬子目錄

虛擬目錄(不是應用程序)localhost/myapp/upload在映射到網絡共享的IIS(版本7+)中的該應用程序下。

我希望ASP.NET忽略對該目錄下的文件的請求,並讓IIS自己處理請求。

我嘗試添加routes.IgnoreRoute(「upload/{* pathInfo}」)到global.asax.cs,但仍然沒有運氣。

當我嘗試訪問一個靜態文件時,如出現ASP.NET錯誤如未能開始監視對'\\ server \ share \ myupload \ web.config'的更改'。該目錄下的一個jpeg。

該上傳目錄下沒有web.config文件。它不是一個ASP.NET應用程序。我不想授予對網絡服務的訪問權限,或者ASP.NET用戶只是讓它檢查在那裏沒有這樣的文件存在。如果我這樣做,有人會上傳一個.aspx文件,然後在我的服務器上執行他們喜歡的任何代碼。

任何想法?

回答

0

這種情況下,最好的解決辦法可能是禁用目錄列表此目錄就像這個教程:

http://technet.microsoft.com/en-us/library/cc731109(WS.10).aspx

而對於下載鏈接,您應該創建一個固定鏈接數據庫,並將其存儲在數據庫。因此,如果您的文件位於www.mysite.com/myapp/upload/file1.doc,用戶將看到的URL是www.mysite.com/myapp/ControllerThatHandlesRedirect/{some guid}。所有鏈接都將存儲在數據庫中,並根據特定的guid從數據庫中提取。所以用戶將不會看到真正的URL只有一個GUID。控制器將根據永久鏈接從數據庫中選擇URL,並將用戶重定向到該文件。

希望對你有所幫助