/// <summary> /// 获取 HttpContextItem /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <returns></returns> public T GetContextItem <T>(string key) { if (string.IsNullOrWhiteSpace(key)) { return(default(T)); } object obj; IRequestScopeContext context = RequestScopeContext.GetCurrent(); if (context != null && context.Items.TryGetValue(key, out obj) && obj != null) { return((T)obj); } else { return(default(T)); } //var obj = OwinRequestScopeContext.Current.Environment[key]; //if (obj == null) //{ // return default(T); //} //return (T)obj; }
/// <summary> /// /// </summary> /// <param name="context"></param> public void BeginRequest(object context) { var environment = System.Web.HttpContext.Current.Request.ServerVariables; var scopeContext = new RequestScopeContext(environment); RequestScopeContext.InitCurrent(scopeContext); }
/// <summary> /// /// </summary> /// <param name="environment"></param> /// <returns></returns> public async Task Invoke(IDictionary<string, object> environment) { var scopeContext = new RequestScopeContext(environment); RequestScopeContext.Current = scopeContext; try { await next(environment); } finally { RequestScopeContext.FreeContextSlot(); } }
/// <summary> /// /// </summary> /// <param name="environment"></param> /// <returns></returns> public async Task Invoke(IDictionary <string, object> environment) { var scopeContext = new RequestScopeContext(environment); RequestScopeContext.InitCurrent(scopeContext); try { await next(environment); } finally { RequestScopeContext.FreeContextSlot(); } }
/// <summary> /// 设置 HttpContextItem /// </summary> /// <param name="key"></param> /// <param name="val"></param> public void SetContextItem(string key, object val) { if (string.IsNullOrWhiteSpace(key)) { return; } IRequestScopeContext context = RequestScopeContext.GetCurrent(); if (context == null) { return; } context.Items[key] = val; }
/// <summary> /// /// </summary> /// <param name="context"></param> public void EndRequest(object context) { RequestScopeContext.FreeContextSlot(); }