如何使用IHttpActionResult设置页眉(How to set header using

2019-09-27 17:15发布

我想补充令牌报头的WebAPI请求。 我怎样才能做到这一点 ?

这是我的示例代码

public IHttpActionResult Authenticate(Login data)
            {
                var Token = "fdsf123546fskjhf-gsuyuhsh";

                //here add these token to header

                return ?
            }

谢谢。

Answer 1:

  1. 你可以使用ResponseMessageResult类为:

     public IHttpActionResult Authenticate(Login data) { var Token = "fdsf123546fskjhf-gsuyuhsh"; var response = new HttpResponseMessage(); response.Headers.Add("Authentication", Token); return new ResponseMessageResult(response); } 
  2. 或创建自己的结果类:

     public class HeaderActionResult : IHttpActionResult { private Tuple<string, string> header; public HeaderActionResult(Tuple<string, string> header) { this.header = header; } public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken) { var response = new HttpResponseMessage(); response.Headers.Add(header.Item1, header.Item2); return Task.FromResult<HttpResponseMessage>(response); } } public IHttpActionResult Authenticate(Login data) { var Token = "fdsf123546fskjhf-gsuyuhsh"; return new HeaderActionResult(Tuple.Create("Authentication", Token)); } 
  3. 或报头添加到使用的扩展方法的任何现有IHttpActionResult对象:

     public static class HttpActionResultExtensions { public static IHttpActionResult AddHeader(this IHttpActionResult actionResult, string name, string value) { return new HeaderActionResult(actionResult, name, value); } private class HeaderActionResult : IHttpActionResult { private readonly IHttpActionResult actionResult; private string name; private string value; public HeaderActionResult(IHttpActionResult actionResult, string name, string value) { this.actionResult = actionResult; this.name = name; this.value = value; } public async Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken) { HttpResponseMessage httpResponseMessage = await this.actionResult.ExecuteAsync(cancellationToken); httpResponseMessage.Headers.Add(this.name, this.value); return httpResponseMessage; } } } 


Answer 2:

此代码周转箱

    public IHttpActionResult Authenticate(Login data)
            {
                        Status = "success";
                        Message = "You have been Authenticated successfully";
                        var Token = "fdsf123546fskjhf-gsuyuhsh";
                        var Result = new { Status = Status, Message = Message };

                        var Response = Request.CreateResponse(HttpStatusCode.OK, Result);
                        Response.Headers.Add("AccessToken", Token.AccessToken);

                        return ResponseMessage(Response);
            }


文章来源: How to set header using IHttpActionResult