我正在开发一个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。
有人建议解决方案
答案 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,这个过程都是一样的。
如果事实证明您正在尝试更改要发送回复的回复格式,请发表评论并告知我们。