c# - 如何使用 C# 修改请求的 HTTP header ?

标签 c# http-headers namevaluecollection

我正在尝试使用 C# 修改 HTTP header 。我试图操纵 Request.Headers on Page preinit 事件。但是当我尝试为 header 设置任何内容时,我得到 PlatformNotSupportedException。由于我们无法将新的 NameValueCollection 设置为 Reqeust.Headers,我尝试使用以下代码设置该值:

Request.Headers.Set(HttpRequestHeader.UserAgent.ToString(), "some value");

知道如何实现吗?

最佳答案

试试这个:

HttpContext.Current.Request.Headers["User-Agent"] = "Some Value";

编辑: 这可能是你的原因: http://bigjimindc.blogspot.com/2007/07/ms-kb928365-aspnet-requestheadersadd.html

其中有一个代码片段,它向 Request.Headers 添加了一个新的 header 。也在 Windows 7 32 位操作系统上验证。

但是你可能想替换这一行:

HttpApplication objApp = (HttpApplication)r_objSender;

与:

HttpApplication objApp = (HttpApplication)HttpContext.Current.ApplicationInstance;

编辑: 要替换现有的 Header 值,请使用:

t.InvokeMember("BaseSet", BindingFlags.InvokeMethod | BindingFlags.NonPublic | BindingFlags.Instance, null, headers, new object[] { "Host", item });

其中“主机”是 header 名称。

关于c# - 如何使用 C# 修改请求的 HTTP header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3975240/

相关文章:

HTTP 请求,正文 vs 参数 vs header vs 数据

c# - 找不到 Xamarin 控件

ruby - 在 Amazon S3 对象上设置 noindex

c# - 将 DataSource 属性添加到自定义 WinForms 控件

http - 基于http header 的nginx中的速率限制

variables - freemarker插值可以包含插值吗?

c# - ASP.Net/C# 将 NameValueCollection 转换为 IDictionary?

c# - 将键值从 NameValueCollection 复制到通用字典

c# - 无法从另一个线程访问对象

c# - 去除非红色调像素