我编写了一个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上提供的解决方案,并删除了应用程序扩展设置,但处理程序确实接到了调用。
有什么想法吗?
答案 0 :(得分:6)
我认为这里的技巧是只为该特定目录注册HttpHandler。这可以通过将system.web / httpHandlers内容移动到web.config中的位置节点来完成。例如:
<location path="calderdale">
( system.web/httpHandlers content )
</location>
答案 1 :(得分:5)
将此添加到您的主网络配置:
<location path="static">
<system.web>
<httpHandlers>
<add verb="GET,HEAD" path="*.*"
type="NES.HiLo.Security.CalderDaleAuthenticationHandler, NES.HiLo.Security" />
</httpHandlers>
</system.web>
</location>
答案 2 :(得分:1)
为什么你需要这样做呢?使用ASP.NET提供程序并使用所需的登录名保护此文件夹不是更容易吗?具有访问/拒绝逻辑的简单webconfig将解决您的问题。当有人试图浏览该目录时,将无法下载该文件并将其重定向到登录页面。如果我误解了某些内容,请告诉我。