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

我正在开发一个ASP .NET mVC项目,我必须更改HttpHeaders。 看到foolowing代码片段:

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。

任何人都建议解决它

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

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

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

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

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

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

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