2014-04-17 61 views
6

我已經編寫了一個httphandler來攔截來自特定文件夾的所有pdf文件請求,並將用戶重定向到登錄頁面。如果用戶通過身份驗證,則可以下載該文件。我的web.config中有攔截如何編寫httphandler以僅攔截特定文件夾中的文件

<httpHandlers> 
<add verb="*" path="/calderdale/*.pdf" 
    type="NES.HiLo.Security.CalderDaleAuthenticationHandler, NES.HiLo.Security" /> 
</httpHandlers> 

以下條目在IIS(6.0)應用擴展設置我加入了具有可執行C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll和擴展PDF格式的設置。

這項工作,但每個pdf文件的請求被攔截,而calderdale目錄中的文件。

我嘗試過解決這個鏈接Mapping specific folder to HttpHandler in web.config的解決方案,並刪除了應用程序擴展設置,但處理程序根本就沒有得到調用。

任何想法?

+0

您可以使用httpModule而不是httpHandler。 –

+0

我無法使用httpmodules,因爲我們只能使用httphandler通過處理程序來保護文件。例如www.domainname.com/foldername/somefile.doc將打開該文件,無論httpmodule存在 – rumi

+0

@Learner你給的鏈接說放置另一個web.config文件在文件夾中,事實上,你有路徑=「/ calderdale/* .pdf「表明你還沒有完成接受的答案所要做的事情,即把web.config放在文件夾'calderdale'中,並將路徑改爲path =」*。pdf「 –

回答

5

添加到您的主web配置:

<location path="static"> 
    <system.web> 
    <httpHandlers> 
     <add verb="GET,HEAD" path="*.*" 
      type="NES.HiLo.Security.CalderDaleAuthenticationHandler, NES.HiLo.Security" /> 
    </httpHandlers> 
    </system.web>  
</location> 
6

我認爲這裏的關鍵是要只註冊特定目錄中的HttpHandler。這可以通過將system.web/httpHandlers內容移動到web.config中的位置節點來完成。例如:

<location path="calderdale"> 

(system.web/httpHandlers content) 

</location> 
1

很抱歉,但我使用ASPNET提供商和保護這一文件夾所需的登錄混淆:)你爲什麼要做這一點是不是更簡單一個簡單的webconfig與邏輯訪問/否認,你解決你的問題。當有人嘗試瀏覽該目錄無法下載文件,並將重定向到登錄頁面。如果我誤解了某些內容,請告訴我。

相關問題