我编写了一个 httphandler 来拦截来自特定文件夹的所有 pdf 文件请求,并将用户重定向到登录页面。如果用户通过身份验证,则可以下载该文件。我的 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并删除了应用程序扩展设置,但随后处理程序确实得到了调用。
有什么想法吗?
最佳答案
我认为这里的诀窍是只为特定目录注册 HttpHandler。这可以通过将 system.web/httpHandlers 内容移动到 web.config 中的位置节点来完成。例如:
<location path="calderdale">
( system.web/httpHandlers content )
</location>
关于c# - 如何编写 httphandler 以仅拦截特定文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23136062/