我的新项目需要在某个日期之后提供一些“隐藏”资产(实际上只是隐藏在 App_Data 目录中)。在此之前,他们应该表现得好像他们不在那里一样。
我已经用 Page 对象做了一百次这种事情,但是当我开始研究这个时,我想我会研究处理程序。从未与他们合作过(并且被他们吓到了),我很高兴地发现他们可以提供我的 XML 和 JPG 文件,而无需整个 Page 类的开销。我已经很高兴我考虑过了。我写它来处理像“MyHandler.ashx?secretfile=blah.xml”这样的功能,它工作得很好。
然后我开始研究特殊的扩展处理,以便处理程序接收对“blah.xml.secret”的请求并在检查日期后返回blah.xml。我脑子里突然亮了几盏灯,我重新编写了代码,以便它处理这种情况。它工作(在 IDE 中)!我很兴奋。
将它放到开发服务器 (IIS) 上有点不同:我必须将 .secret 注册为 .NET 类型(没什么大不了的),直到我取消选中“验证文件存在”复选框之前它仍然无法工作。(blah.xml.secret 显然不存在:blah.xml 存在,但不在要求它的位置,仅在安全的 App_Data 目录中。)这不是什么大不了的事,但现在我的聪明解决方案依赖于两个实现来自 IIS 方面的详细信息。
所以我的问题是:这是 asp.net 中处理程序的预期用途吗?我是否将其扭曲得面目全非?我觉得我过去曾见过网站做这样的把戏,但对于我想做的一件事,IIS 的更改似乎过于复杂。在我对此的研究中,我没有找到一个使用处理程序的灌篮 1-2-3 指南,其中包含这样的示例,所以这让我觉得我可能在滥用它或以错误的方式处理它。