36 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Net.Http;
 | 
						|
 | 
						|
namespace FastGithub.Http
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// 请求上下文扩展
 | 
						|
    /// </summary>
 | 
						|
    static class RequestContextExtensions
 | 
						|
    {
 | 
						|
        private static readonly HttpRequestOptionsKey<RequestContext> key = new(nameof(RequestContext));
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 设置RequestContext
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="httpRequestMessage"></param>
 | 
						|
        /// <param name="requestContext"></param>
 | 
						|
        public static void SetRequestContext(this HttpRequestMessage httpRequestMessage, RequestContext requestContext)
 | 
						|
        {
 | 
						|
            httpRequestMessage.Options.Set(key, requestContext);
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 获取RequestContext
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="httpRequestMessage"></param>
 | 
						|
        /// <returns></returns>
 | 
						|
        public static RequestContext GetRequestContext(this HttpRequestMessage httpRequestMessage)
 | 
						|
        {
 | 
						|
            return httpRequestMessage.Options.TryGetValue(key, out var requestContext)
 | 
						|
                ? requestContext
 | 
						|
                : throw new InvalidOperationException($"请先调用{nameof(SetRequestContext)}");
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |