有没有办法在不出现 PlatformNotSupportedException 的情况下读取响应标头?

发布于 2024-08-11 11:29:10 字数 754 浏览 3 评论 0原文

我正在为 ASP.Net MVC 开发一个过滤器属性,当内容未被修改时,它将返回 304 响应。为了实现这一目标,能够读取控制器中设置的 Last-Modified 标头值会很方便......似乎只是一个问题。在 Cassini [Visual Studio 2008 Dev Web Server] 上执行如下代码时,我似乎找不到读取标头的方法...

Response.AddHeader("Last-Modified", lastModified);
string getLastModified = Response.Headers.Get("Last-Modified");

我也尝试了以下操作:

Response.AddHeader("Last-Modified", lastModified);
string getLastModified = Response.Headers["Last-Modified"];

两者都返回 PlatformNotSupportedException 并表明它们需要“此操作需要 IIS 集成管道模式。”

以下是有关环境的一些详细信息:

  • 框架版本:.Net 3.5 - SP1
  • IDE:Visual Studio 2008
  • Web 服务器:Cassini [Dev] 和 IIS6 [Production]

我可能缺少一个简单的方法来让它工作... < br> 预先感谢,

I am working on an Filter Attribute for ASP.Net MVC that will return a 304 response when the content has not been modified. It would be handy to be able to read the Last-Modified header value set in the Controller in order to accomplish this... there just seems to be one problem. I can't seem to find a way to read the headers when executing code like the following on Cassini [Visual Studio 2008 Dev Web Server]...

Response.AddHeader("Last-Modified", lastModified);
string getLastModified = Response.Headers.Get("Last-Modified");

I've also tried the following:

Response.AddHeader("Last-Modified", lastModified);
string getLastModified = Response.Headers["Last-Modified"];

Both return a PlatformNotSupportedException and indicate that they require "This operation requires IIS integrated pipeline mode."

Here are some details on the environment:

  • Framework Version: .Net 3.5 - SP1
  • IDE: Visual Studio 2008
  • Web Server: Cassini [Dev] and IIS6 [Production]

I'm probably missing a simple way to get this to work...
Thanks in advance,
Joe

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

┊风居住的梦幻卍 2024-08-18 11:29:10

Cassini 或 IIS 6 不支持 Response.Headers。其他几个最新功能也是如此,例如服务器变量。

解决方案:

  1. 通过在 IIS 中配置网站以指向您的开发文件,并相应地设置项目的起始 URL,使用本地版本的 IIS 7 进行开发。如果需要,您可以对多个项目使用 80 以外的端口。

  2. 将您的生产站点切换为使用 IIS 7(可能使用 Windows Server 2008)。还有许多其他值得升级的充分理由,例如提高性能。

如果无法升级,我能想到的唯一替代方法是编写 ISAPI 过滤器来更改标头(用 C++ 编写)。

Response.Headers isn't supported with Cassini or IIS 6. This is true for several other recent features, too, such as Server Variables.

Solution:

  1. Do your development with a local version of IIS 7 by configuring a web site in IIS to point to your dev files, and setting the start URL for your project accordingly. You can use ports other than 80 if you need to, for multiple projects.

  2. Switch your production site to use IIS 7 (probably with Windows Server 2008). There are a bunch of other good reasons to upgrade, too, such as improved performance.

If an upgrade isn't possible, the only alternative I can think of is to write an ISAPI filter to make the header changes (in C++).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文