如何在c#,ASP .NET中修改请求标头

时间:2009-11-28 12:23:22

标签: c# asp.net html asp.net-mvc http-headers

我正在开发一个ASP .NET mVC项目&我必须改变HttpHeaders。看到愚蠢的代码片段:

WebRequest req= HttpWebRequest.Create("myURL");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

req.Headers.Add("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.15) Gecko/2009101601 Firefox/3.0.15 (.NET CLR 3.5.30729)");
req.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
req.Headers.Add("Accept-Language", "en-us,en;q=0.5");

这给出了一个例外,即

  

必须使用适当的属性修改此标头。\ r \ nParameter name:name。

有人建议解决方案

2 个答案:

答案 0 :(得分:6)

您应该通过属性设置对象中具有相应属性的标头值。例如,提供UserAgent属性来设置用户代理。您应该使用以下命令修改标题:

req.UserAgent = "Mozilla/5.0 ...";

当然,您应该在调用GetResponse之前设置标头值。

答案 1 :(得分:4)

除了@Mehrdad Afshari所说的,你的req变量必须是HttpWebRequest类型。 WebRequest(抽象父类)没有UserAgent和Accept属性。

HttpWebRequest req = WebRequest.Create( "http://..." ) as HttpWebRequest;

此外,我只是想确保您真正尝试更改从MVC应用程序发送的请求的标头,而不是从MVC应用程序发回的响应。您编写代码的方式有点令人困惑,因为您在收到响应后设置了标头,这将无效,并且因为您专门引用了MVC。如果您在服务器上创建WebRequest,无论您使用的是WebForms还是MVC,这个过程都是一样的。

如果事实证明您正在尝试更改要发送回复的回复格式,请发表评论并告知我们。