Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从ASP.NET MVC控制器中使用WebRequest时,不会传递标头_C#_Asp.net Mvc_Webrequest - Fatal编程技术网

C# 从ASP.NET MVC控制器中使用WebRequest时,不会传递标头

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

我有一个ASP.NETMVC4项目,当我使用webrequest进行http调用时,头不会传递

Linqpad中的相同代码我可以在头中设置信息,例如授权,它工作正常我可以在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

我认为您需要删除标题右侧的空白:添加:

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缓存-没有任何意义。再次感谢:-