using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Net.Http; using System.Threading; using System.Threading.Tasks; using System.Web; using System.Web.Http.Filters; using Pcb.Business.Authentication; //using Pcb.Business.Biz; using Pcb.Common; using Pcb.Common.Enum; using Pcb.Domain; using Pcb.Infrastructure.Ioc; namespace Pcb.Api.Infrastructures { /// /// API Action Filter /// public class ActionInterceptAttribute : ActionFilterAttribute { /// /// /// /// public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext) { base.OnActionExecuting(actionContext); } /// /// /// /// public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) { base.OnActionExecuted(actionExecutedContext); if (actionExecutedContext.Response != null) { actionExecutedContext.Response.Headers.Add("PerformanceMonitor",""); actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Origin", "*"); if (AppConfigHelper.EnableReqLogging) LogReqSuccessInfo(actionExecutedContext); } } private void LogReqSuccessInfo(HttpActionExecutedContext actionExecutedContext) { var req = actionExecutedContext.Request; if (actionExecutedContext.Response.StatusCode != System.Net.HttpStatusCode.InternalServerError) { IEnumerable listPhoneType; IEnumerable listPhoneUniqueSign; IEnumerable listToken; IEnumerable listUserAgent; req.Headers.TryGetValues("phone_type", out listPhoneType); req.Headers.TryGetValues("phone_unique_sign", out listPhoneUniqueSign); req.Headers.TryGetValues("token", out listToken); req.Headers.TryGetValues("User-Agent", out listUserAgent); var url = req.RequestUri.LocalPath; var ip = Utils.GetIP(); var phoneType = listPhoneType == null ? "" : listPhoneType.Aggregate((a, b) => a + b); var phoneUniqueSign = listPhoneType == null ? "" : listPhoneUniqueSign.Aggregate((a, b) => a + b); var token = listToken == null ? "" : listToken.Aggregate((a, b) => a + b); var userAgent = listUserAgent == null ? string.Empty : listUserAgent.Aggregate((a, b) => a + " " + b); var member = WebAuthenticationContext.AppAuthenticationUser; string info = string.Format("
地址:{0} 请求成功!
参数: {1}
耗时: {2}", url, req.RequestUri.Query,""); int? memberId = null; if (member != null) memberId = member.UserId; //ThreadPool.QueueUserWorkItem(delegate { IocContainerManager.Container.Resolve().LogInfo(info, url, time , phoneType, ip, userAgent, memberId); }); } } } }