protected override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { bool isCorsRequest = request.Headers.Contains(Origin); bool isPreflightRequest = request.Method == HttpMethod.Options; var logInfo2 = new JLogInfo { LogType = JLogType.Info.ToString(), Message = "获取请求:isPreflightRequest:" + isPreflightRequest.ToString() + ";isCorsRequest:" + isCorsRequest.ToString() + "" + ";request.Method:" + request.Method.ToString() + "", ActionName = "SendAsync", ModuleName = "CorsHandler" }; LogHelper.Write(logInfo2); if (isCorsRequest) { if (isPreflightRequest) { return(Task.Factory.StartNew <HttpResponseMessage>(() => { HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); response.Headers.Add(AccessControlAllowOrigin, request.Headers.GetValues(Origin).First()); string accessControlRequestMethod = request.Headers.GetValues(AccessControlRequestMethod).FirstOrDefault(); if (accessControlRequestMethod != null) { response.Headers.Add(AccessControlAllowMethods, accessControlRequestMethod); } string requestedHeaders = string.Join(", ", request.Headers.GetValues(AccessControlRequestHeaders)); if (!string.IsNullOrEmpty(requestedHeaders)) { response.Headers.Add(AccessControlAllowHeaders, requestedHeaders); } return response; }, cancellationToken)); } else { return(base.SendAsync(request, cancellationToken).ContinueWith <HttpResponseMessage>(t => { HttpResponseMessage resp = t.Result; resp.Headers.Add(AccessControlAllowOrigin, request.Headers.GetValues(Origin).First()); return resp; })); } } else { return(base.SendAsync(request, cancellationToken)); } }
public void Write(JLogInfo logInfo, JLogType logType, Exception ex) { Level level = ConvertToLevel(logType); LoggingEvent loggingEvent = new LoggingEvent(ThisDeclaringType, Logger.Repository, Logger.Name, level, logInfo.Message, ex); if (ex != null) { logInfo.Message = ex.Message + ex.StackTrace; } foreach (var property in logInfo.GetType().GetProperties()) { loggingEvent.Properties[property.Name] = property.GetValue(logInfo, null); } Logger.Log(loggingEvent); }
/// <summary> /// ctor /// </summary> /// <param name="context"></param> public EFAuditDataService(DbContext context) { _context = context; if (LogInfo == null) { LogInfo = new JLogInfo(); } OnLog = sql => { var lvl = LogInfo.LogType; LogInfo.LogType = JLogType.Debug.ToString(); LogInfo.Message = sql; LogInfo.OpTime = DateTime.Now; LogHelper.Write(LogInfo); LogInfo.LogType = lvl; }; }
/// <summary> /// 根据DBHelper创建一个 /// </summary> /// <param name="helper"></param> public AdoAuditDataService(DBHelper helper) { DBHelper = helper; if (LogInfo == null) { LogInfo = new JLogInfo(); } OnLog = sql => { var lvl = LogInfo.LogType; LogInfo.LogType = JLogType.Debug.ToString(); LogInfo.Message = sql; LogInfo.OpTime = DateTime.Now; LogHelper.Write(LogInfo); LogInfo.LogType = lvl; }; }
/// <summary> /// 应用程序启动事件方法 /// </summary> protected virtual void Application_Start() { Stopwatch sw = new Stopwatch(); sw.Start(); //DependencyResolver.SetResolver(new NinjectDependencyResolver(AddBindings)); var logInfo = new JLogInfo { LogType = JLogType.Info.ToString(), Message = "Application_Start", ActionName = "Application_Start", ModuleName = "MvcApplication" }; GetAllAssemblys(); ResHelper.CombinAssemblyResx(Assemblys); AddBindings(SiteManager.Kernel); AppManager.Instance.UserProvider = SiteManager.Kernel.Get <IDataProvider <AppUser> >(); AppManager.Instance.RoleProvider = SiteManager.Kernel.Get <IDataProvider <AppRole> >(); AppManager.Instance.StateProvider = SiteManager.Kernel.Get <IStateProvider>(); SiteManager.Init(); SiteManager.Get <UserConfigStorage <UserConfig> >(); var resFileWriter = new ResFileWriter(); resFileWriter.WriteResFiles(); sw.Stop(); logInfo.Costs = sw.ElapsedMilliseconds; LogHelper.Write(logInfo); //初始化日程表的基础数据栏目 SiteManager.Catalog.InitStaticCatalogs(typeof(ScheduleEvent)); AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); SiteManager.Catalog.InitStaticCatalogs(typeof(MessageRoot)); //开启数据库更新 //if (!DbSchemaVersionManager.GetInstance.ValidateVersion()) //{ // DbSchemaVersionManager.GetInstance.UpdateDbSchemaToMaxVersion(); //} }
/// <summary> /// /// </summary> /// <param name="actionContext"></param> public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext) { //获取请求的控制器完整命名 string controllerFullName = actionContext.ActionDescriptor.ControllerDescriptor.ControllerType.FullName; //获取请求名称 string actionName = actionContext.ActionDescriptor.ActionName; var logInfo2 = new JLogInfo { LogType = JLogType.Info.ToString(), Message = "获取请求:控制器名称:" + controllerFullName + ";请求名称:" + actionName + "", ActionName = controllerFullName, ModuleName = actionName }; LogHelper.Write(logInfo2); #region 获取服务的自定义属性(如果自定义数据忽略该请求的验证直接通过 Collection <ApiAuthAttribute> anonymousAction = actionContext.ActionDescriptor.GetCustomAttributes <ApiAuthAttribute>(); if (anonymousAction.Any()) { if (anonymousAction[0].IsIgnoreAuth) { return; } } #endregion //获取正在请求的服务对象信息 List <ServiceInfo> serviceList = ApiManager.mServiceInfoManager.GetServiceInfo(actionName, controllerFullName); if (!serviceList.Any()) { //如果未授权返回错误提示信息 HandleUnauthorizedRequest(actionContext); return; } ServiceInfo serviceInfo = serviceList[0]; #region 根据服务提供的授权方式与对应客户id的授权方式进行判断该请求是否允许访问 /* * 根据所访问的服务对象来确定该服务采用的何种验证方式 * 0 有权限的客户组(NeedAuth) :必须通过安全验证,与客户组id授权验证 * 1 所有授权客户端(AllUsers) :只需要通过安全验证 * 2 所有人(EveryOne) :不需要验证直接访问 * 4 禁止所有人(Forbidden) :不允许任何访问 */ switch (serviceInfo.AuthWay) { case "0": if (!this.IsAuthenticated) { //如果未授权返回错误提示信息 HandleUnauthorizedRequest(actionContext); } bool isService = ApiManager.mServerAuthManager.GetAuthService(System.Web.HttpContext.Current.User.Identity.Name, actionName, controllerFullName); if (!isService) { //如果未授权返回错误提示信息 HandleUnauthorizedRequest(actionContext); } break; case "1": if (!this.IsAuthenticated) { //如果未授权返回错误提示信息 HandleUnauthorizedRequest(actionContext); } break; case "2": break; case "4": HandleUnauthorizedRequest(actionContext); return; default: HandleUnauthorizedRequest(actionContext); return; } #endregion }