【发布时间】:2011-04-04 14:47:57
【问题描述】:
有没有办法让 Http Handler 将请求通过管道传回 IIS 6 并让它处理请求?
例如,如果我为 verb="(wildcard)" path="(wildcard).txt" 设置了 Http 处理程序
我有一个名为 myunformated.txt 的文件,如果它没有附加查询字符串参数,我希望 IIS 6 将它发送给用户。
有什么想法吗?
【问题讨论】:
标签: c# .net httphandler
有没有办法让 Http Handler 将请求通过管道传回 IIS 6 并让它处理请求?
例如,如果我为 verb="(wildcard)" path="(wildcard).txt" 设置了 Http 处理程序
我有一个名为 myunformated.txt 的文件,如果它没有附加查询字符串参数,我希望 IIS 6 将它发送给用户。
有什么想法吗?
【问题讨论】:
标签: c# .net httphandler
您的问题的答案是否定的。这就是 IIS7 的集成管道实现的目标,但它在 IIS6 上不可用。
在这种特定情况下,使用 context.Response.TransmitFile 可以解决问题,尽管您应该考虑设置响应内容类型、字符集和缓存控制标头,例如:-
HttpResponse Response = context.Response
Response.ContentType = "text/plain";
Response.CharSet = "Windows-1252";
Response.AddFileDependency(filePath);
// Set additional properties to enable caching.
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(true);
Response.TransmitFile(filePath);
这几乎复制了 IIS 静态内容处理程序将执行的操作。
【讨论】:
为什么不只是:Response.TransmitFile? - 请注意,与 Response.WriteFile 不同,此文件不会加载整个文件。
您可能希望完全避免它,并让链接指向不同的文件名。这样您就可以从 IIS 中获得所有您想要的东西 - 尤其是恢复下载。
【讨论】: