c# - 如何编写 httphandler 以仅拦截特定文件夹中的文件

标签 c# asp.net .net iis-6 httphandler

我编写了一个 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/

相关文章:

c# - 如何让 Newtonsoft 按原样反序列化日期并将其命名为 utc?

c# - ASP.NET 中的缓存是跨用户共享还是特定于个人?

javascript - 使用jquery获取表中隐藏标签的值?

c# - 从字符串变量中的名称创建类的对象实例

c# - C#中依赖注入(inject)和YAGNI混淆的正确使用

c# - 何时使用 ArraySegment<T> 而不是 Memory<T>?

html - 将 Bootstrap 网格应用于 RadioButtonList 的 ListItem

c# - 将数据表中的多行连接到数组中

c# - 如何在 LINQ 中动态创建联接?

c# - 如何通过 C#.NET 代码创建 Windows 文件和文件夹快捷方式?