Asp.net Web Api获取请求标头

时间:2015-12-08 04:39:13

标签: asp.net asp.net-web-api

我有一个Api项目,因为我有两个不同的控制器:

一个控制器是System.Web.Mvc控制器:

public class HomeController:Controller

在那里,我已经定义了如下的请求:

var request = System.Web.HttpContext.Current.Request;
                request.Headers.Add("token", "test");

另一个控制器是Api控制器:

  

public class CalendarController:ApiController       {           私有字符串_accessToken;

    public CalendarController()
    {
        IEnumerable<string> accessTokenValues;

        var request = System.Web.HttpContext.Current.Request;

        var token = request.Headers.GetValues("token");
        //var tokenValues = accessTokenValues as string[] ?? accessTokenValues.ToArray();
        //_accessToken = (tokenValues.Any()) ? tokenValues.First() : "";
    } }

我添加了#34;令牌&#34;到请求标题但我无法在Api控制器中获取它。请帮我 ! 谢谢!

1 个答案:

答案 0 :(得分:1)

始发呼叫者负责设置请求标头。因此,在HomeController的第一个请求中添加标头意味着它不会被添加到CalendarController的后续请求中。有关ASP.NET请求响应管道的更多详细信息,请查看:https://msdn.microsoft.com/en-us/library/bb470252.aspx

最终,它取决于您希望如何添加到标题中。

例如,如果您将服务器端的所有信息添加到请求标头中并且您正在使用OWIN,则可以添加一个自定义中间件层,该层将拦截传入的呼叫并将您的自定义标头添加为请求进入您的控制器。(http://www.asp.net/aspnet/overview/owin-and-katana/owin-middleware-in-the-iis-integrated-pipeline