如何编写httphandler只截取特定文件夹中的文件

问题描述 投票:6回答:3

我编写了一个httphandler来拦截来自特定文件夹的URL的所有pdf文件请求,并将用户重定向到Login页面。如果用户已通过身份验证,则可以下载该文件。我的web.config有以下条目用于拦截

<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上给出的解决方案并删除了应用程序扩展设置但是处理程序确实得到了调用。

有任何想法吗?

c# asp.net .net iis-6 httphandler
3个回答
6
投票

我认为这里的技巧是只为该特定目录注册HttpHandler。这可以通过将system.web / httpHandlers内容移动到web.config中的位置节点来完成。例如:

<location path="calderdale">  

( system.web/httpHandlers content )

</location>

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>

1
投票

为什么你需要这样做呢?使用ASP.NET提供程序并使用所需的登录名保护此文件夹不是更容易吗?具有访问/拒绝逻辑的简单webconfig将解决您的问题。当有人试图浏览该目录时,将无法下载该文件并将其重定向到登录页面。如果我误解了某些事情,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.