我正在開發一個ASP.NET應用程序,它需要能夠服務包含範圍請求的文件。 ASP.NET MVC團隊曾表示they won't support this within MVC,並建議使用IIS來提供靜態文件。支持字節範圍
這是我的問題。當用戶提出請求時,他們不會在將直接映射到文件的URL中包含任何標識信息。請求可能如下所示:http://whatever.com/Download?ID=TXlGaWxlLnhv34lk。在MVC中,我需要進行Web服務調用以將該ID解析爲最終將位於網絡共享上的文件。另外,我們有我們自己的定製授權機制,每個請求在我們服務文件之前都必須經過。
TomaszPęczek實現了一個名爲RangeFileResult的自定義ActionResult,它似乎正在重新實現IIS默認做的範圍請求支持。我試過使用它,它似乎工作......但我覺得應該有辦法讓IIS爲我服務的靜態文件。因此,最終,我想知道是否有可能讓MVC接收請求,驗證&授權,將ID解析爲網絡共享上的文件路徑,然後退回到IIS的StaticFile處理程序以實際返回文件信息。
當你說「重定向用戶到那個位置」,你是什麼意思?你是否設想用戶的瀏覽器是真的重定向到一個新的頁面?如果是這樣,這不是我要找的。唯一的訪問文件應該通過帶有文檔ID的URL 只要授權,它需要檢查每一次,不管它是否已經被下載過,授權是基於每個文件的,而不是基於每個目錄的,我可能需要額外的之後工作 - 例如將下載請求寫入審計日誌。 – Keith
@凱斯 - 你的建議是不可能的。一旦你開始ASP.NET處理程序,你不能再有IIS處理任何東西。響應必須通過asp.net響應返回。獲得本地IIS處理的唯一方法是讓IIS處理請求,如果你這樣做,你不能讓asp.net處理請求。 –
謝謝,Erik。雖然這不是一個解決方案,但它是一個答案! – Keith