C# 从ASP.NET MVC控制器中使用WebRequest时,不会传递标头
我有一个ASP.NETMVC4项目,当我使用webrequest进行http调用时,头不会传递 Linqpad中的相同代码我可以在头中设置信息,例如授权,它工作正常我可以在Fiddler中看到头值 然而,当我在我的MCV控制器中执行相同的代码时,头不会通过。就好像ASP.NET MVC正在覆盖我的标题一样 有什么建议吗C# 从ASP.NET MVC控制器中使用WebRequest时,不会传递标头,c#,asp.net-mvc,webrequest,C#,Asp.net Mvc,Webrequest,我有一个ASP.NETMVC4项目,当我使用webrequest进行http调用时,头不会传递 Linqpad中的相同代码我可以在头中设置信息,例如授权,它工作正常我可以在Fiddler中看到头值 然而,当我在我的MCV控制器中执行相同的代码时,头不会通过。就好像ASP.NET MVC正在覆盖我的标题一样 有什么建议吗 var client = WebRequest.Create(url); client.Headers.Add(String.Format("Au
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
我认为您需要删除标题右侧的空白:添加:
client.Headers.Add(String.Format("Authorization:{0}", "Fun-Kitty"));
client.Headers.Add(String.Format("X-Requested-With:{0}", "PowerFlower"));
或者,使用接受2个字符串参数的重载:
client.Headers.Add("Authorization", "Fun-Kitty");
client.Headers.Add("X-Requested-With", "PowerFlower");
根据:
必须以格式name:value指定header参数
谢谢你的回复。我设置标题的方式很好,我删除了空格只是为了测试,但结果相同。这些带有或不带空格的设置在Linqpad或Winform应用程序中都可以正常工作,只是在ASP.NET MVC控制器中不行。我有一个理论@schmoopy。尝试强制转换创建HttpWebRequest:var client=HttpWebRequestWebRequest.Createurl;谢谢你的建议。我试过了,但结果都一样。@schmoopy好吧,现在我很好奇。分解WebRequest代码,待命…没关系,非常感谢您的所有调查-同意这毫无意义。我重新启动了cleard asp.net缓存-没有任何意义。再次感谢:-