asp.net - 为什么当我使用 Server.Transfer() 时没有创建 HTTP header ?

标签 asp.net caching http-headers webserver server.transfer

我正在使用 .aspx 页面根据给定参数从文件系统提供图像文件。

Server.Transfer(imageFilePath);

当此代码运行时,将提供图像,但不会创建 Last-Modified HTTP header 。 与直接从同一服务器上的 URL 调用同一文件不同。

因此,浏览器不会发出 If-Modified-Since 并且不会缓存响应。

有没有办法让服务器像通常直接请求文件(在这种情况下是图像)一样创建 HTTP header ,还是我必须手动创建 header ?

最佳答案

当您传输文件时,服务器将返回与 .aspx 文件相同的 header ,因为它基本上是由 .NET 引擎执行的。

你基本上有两个选择:

  • 改为重定向到该文件,以便浏览器发出对该文件的请求。

  • 设置所需的 header ,然后使用 Request.BinaryWrite(或 smiiliar)在响应中发送回文件数据。

关于asp.net - 为什么当我使用 Server.Transfer() 时没有创建 HTTP header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13069687/

相关文章:

asp.net - 信箱不可用。服务器响应是 : Access denied - Invalid HELO name (See RFC2821 4. 1.1.1)

c# - Web 应用程序中对 System.Windows.Forms 的资源和引用

caching - 原则 2 结果缓存失效

vba - 使用 VBA 和 MS XMLHTTP 将文件上传到 Azure Blob 存储

c# - 在 Web API 2 中处理 HEAD 请求时的 Content-Length 0

asp.net-web-api - ASP.NET Web API 缓存控制

c# - MVC3 和重写

c# - 当用户不活动时如何结束 session

python - memcached 中的 Scrapy http 缓存存储

asp.net - Donut 缓存是否与 ASP.NET MVC 一起正常工作?