如何使用IHttpActionResult设置标题 [英] How to set header using IHttpActionResult

查看:91
本文介绍了如何使用IHttpActionResult设置标题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将令牌添加到webapi请求的标头中. 我怎样才能做到这一点 ?

i want to add token to header for webapi request. how can i do this ?

这是我的示例代码

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

                //here add these token to header

                return ?
            }

谢谢.

推荐答案

  1. 您可以使用 ResponseMessageResult 类:

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

    var response = new HttpResponseMessage();

    response.Headers.Add("Authentication", Token);

    return new ResponseMessageResult(response);
}

  • 或创建自己的结果类:

  • Or create your own result class:

    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));
    }
    

  • 或使用扩展方法将标头添加到任何现有的IHttpActionResult对象:

  • Or add a header to any existing IHttpActionResult object using an extension method:

    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;
            }
        }
    }
    

  • 这篇关于如何使用IHttpActionResult设置标题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆