c# - 如何在 Asp.Net 中的 Server.Transfer 之前设置 Response Header?

标签 c# asp.net http-headers response.redirect server.transfer

我有一个页面,根据某些条件,我正在执行 Response.Redirect 或 Server.Transfer。现在我想为这两种情况添加一个标题。所以我正在做以下事情

    Response.AddHeader("Vary", "User-Agent");

    if (condition) 
    {
        Server.Transfer(redirectUrl);
    }
    else
    {
        Response.Redirect(redirectUrl);
    }

现在,当代码通过 Server.Transfer 代码路径时,Vary header 设置为 * 而当它通过 Response.Redirect 时, header 正确设置为 User-Agent。

为什么会发生这种情况,如何将这两种情况的响应 header 设置为相同?

最佳答案

当您调用 Server.Transfer 时,当前页面的 Response 对象将被目标页面的 Response 对象替换发送给用户)。 所以,如果你想设置这个特定的 header 属性,你必须在目标页面上进行。

如果它是有条件的,也许您可​​以使用 HttpContext.Items 属性,该属性在第一页上设置并在第二页上读取。

问候

关于c# - 如何在 Asp.Net 中的 Server.Transfer 之前设置 Response Header?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11417355/

相关文章:

c# - 如何使用 microsoft.interop.word 从 word 文件中读取项目符号列表?

c# - 在给出 404 的 IIS 上运行 .NET Core 2.0

ruby-on-rails - Apipie 干扰正确的错误代码

c# - 来自 NuGet 的 System.Data.SQLite,interop dll 未复制到输出目录

c# - 查找大文本部分

c# - 为什么 Ninject 不使用 InCallScope 释放已处置的对象?

asp.net - 如何以编程方式向 ASP.NET UpdatePanel 添加触发器?

c# - 如何在 ASP.NET Core 中使用自定义验证获取索引处的属性?

firefox - Firefox 中的 UTF-8 问题 - 响应 header 覆盖元标记?

php - 发送 header 以下载 PDF 时,Safari 会附加 .html