【发布时间】:2014-11-19 17:02:52
【问题描述】:
我有一个 ASP.NET MVC 4 项目,当我使用 webrequest 进行 http 调用时,标头不会通过。
Linqpad 中的相同代码我可以在标题中设置信息,例如 AUTHORIZATION,它工作正常(我可以在 Fiddler 中看到标题值)
但是,当我在 MCV 控制器中执行相同的代码时,标头不会通过。好像 ASP.NET MVC 正在覆盖我的标头。
有什么建议吗?
var client = WebRequest.Create(url);
client.Headers.Add(String.Format("Authorization:{0}", "Fun-Kitty"));
client.Headers.Add(String.Format("X-Requested-With:{0}", "PowerFlower"));
client.Method = "GET";
client.ContentType = "application/json";
HttpWebResponse resp;
using (resp = (HttpWebResponse)client.GetResponse())
{
if (resp.GetResponseStream() != null)
{
var status = resp.StatusDescription; // TODO
var reader = new StreamReader(resp.GetResponseStream());
var obj = reader.ReadToEnd();
}
}
更新: 请注意,标头设置正确(使用 MVC 控制器调用时除外) - 以各种方式设置标头没有影响(即:在 Linqpad 中工作,而不是在 MVC 控制器中)
client.Headers.Set("Authorization", "PwrUp");
client.Headers["Authorization"] = "ababab11ab";
client.Headers.Add(String.Format("Authorization:{0}", "Fun-Kitty"));
此代码可以很好地从 LinqPad 或 Winforms/WPF 应用程序传递标头,但不能从 ASP.NET MVC 控制器传递。
我还注意到,在检查标头时,当从 MVC 控制器进行调用时,会设置以下值(但不确定它是否与它有任何关系):
X-Requested-With: XMLHttpRequest
【问题讨论】:
标签: c# asp.net-mvc webrequest