Exemple #1
0
        protected void Application_Start()
        {
            Application["OnLineCount"] = 0;//在应用程序第一次启动时初始化在线人数为0

            AreaRegistration.RegisterAllAreas();
            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);

            //log4net配置信息
            log4net.Config.XmlConfigurator.Configure();

            var httpContextProvider     = new HttpContextProvider(HttpContext.Current);
            var controllers             = new[] { typeof(ZLERP.Web.Controllers.HomeController) };
            var includeHandlingSettings = (IIncludeHandlingSettings)ConfigurationManager.GetSection("includeHandling");

            DependencyResolver.SetResolver(new QnDDepResolver(httpContextProvider, includeHandlingSettings, controllers));

            //注册自定义的模型验证
            //暂时没起到作用,不需要 by:Sky 2012/03/14
            // DataAnnotationsModelValidatorProvider.RegisterAdapterFactory(typeof(RequiredAttribute), (m, c, a) => new MyRequiredAttributeAdapter(m, c, (RequiredAttribute)a));

            //初始化uowfactory
            IUnitOfWorkFactory factory = new UnitOfWorkFactory();

            factory.Configuration();
        }
Exemple #2
0
        public void HttpContextProviderConstructor()
        {
            var correlationId   = new StringValues("CorrelationId1");
            var forwardedFor    = new StringValues("SomeForwardedForValue1");
            var path            = new StringValues("SomePathValue1");
            var referrer        = new Uri("http://SomeReferrerValue1");
            var remoteIpAddress = "10.0.0.1";
            var requestMethod   = "SomeRequestMethodValue1";
            var userAgent       = new StringValues("SomeUserAgentValue1");

            var accessorMock = SetUpFullHttpContextAccessor(correlationId, forwardedFor, path, referrer, remoteIpAddress, requestMethod, userAgent);

            var contextProvider = new HttpContextProvider(accessorMock.Object);

            contextProvider.ContextProviders.First(p => p is CorrelationIdContextProvider)
            .As <CorrelationIdContextProvider>().Accessor.CorrelationId.Should().Be(correlationId);
            contextProvider.ContextProviders.First(p => p is ForwardedForContextProvider)
            .As <ForwardedForContextProvider>().ForwardedFor.Should().BeEquivalentTo(forwardedFor);
            contextProvider.ContextProviders.First(p => p is PathContextProvider)
            .As <PathContextProvider>().Path.Should().Be(path);
            contextProvider.ContextProviders.First(p => p is ReferrerContextProvider)
            .As <ReferrerContextProvider>().Referrer.Should().Be(referrer);
            contextProvider.ContextProviders.First(p => p is RemoteIpAddressContextProvider)
            .As <RemoteIpAddressContextProvider>().RemoteIpAddress.ToString().Should().Be(remoteIpAddress);
            contextProvider.ContextProviders.First(p => p is RequestMethodContextProvider)
            .As <RequestMethodContextProvider>().RequestMethod.Should().Be(requestMethod);
            contextProvider.ContextProviders.First(p => p is UserAgentContextProvider)
            .As <UserAgentContextProvider>().UserAgent.Should().Be(userAgent);
        }
Exemple #3
0
        public void HttpContextProviderAddContext()
        {
            var correlationId   = "CorrelationId1";
            var forwardedFor    = "SomeForwardedForValue1";
            var path            = "SomePathValue1";
            var referrer        = new Uri("http://SomeReferrerValue1");
            var remoteIpAddress = "10.0.0.1";
            var requestMethod   = "SomeRequestMethodValue1";
            var userAgent       = "SomeUserAgentValue1";

            var accessorMock = SetUpFullHttpContextAccessor(correlationId, forwardedFor, path, referrer, remoteIpAddress, requestMethod, userAgent);

            var contextProvider = new HttpContextProvider(accessorMock.Object);

            var logEntry = new LogEntry();

            contextProvider.AddContext(logEntry);

            logEntry.CorrelationId.Should().Be(correlationId);
            logEntry.ExtendedProperties["X-Forwarded-For"].Should().Be(forwardedFor);
            logEntry.ExtendedProperties["Path"].Should().Be(path);
            logEntry.ExtendedProperties["Referrer"].Should().Be(referrer.ToString());
            logEntry.ExtendedProperties["RemoteIpAddress"].Should().Be(remoteIpAddress);
            logEntry.ExtendedProperties["Method"].Should().Be(requestMethod.ToUpperInvariant());
            logEntry.ExtendedProperties["UserAgent"].Should().Be(userAgent);
        }
Exemple #4
0
        public void ShouldThrowNotSupportedExceptionForOtherThanRequestInitializationContextTypeOfContexts()
        {
            HttpContextProvider provider = new HttpContextProvider();

            Assert.ThrowsDelegate action = () => provider.SetInitializationContext(new object());

            Assert.Throws <NotSupportedException>(action);
        }
 public LandingController()
 {
     _routes = new Routes();
     var contextProvider = new HttpContextProvider();
     _authApi = new AuthApi(contextProvider);
     _usersApi = new UsersApi(contextProvider);
     _appActionsApi = new AppActionsApi(contextProvider);
 }
        public static IApplicationBuilder UseGlobalHttpContext(this IApplicationBuilder app)
        {
            var httpContextAccessor = app.ApplicationServices.GetRequiredService <IHttpContextAccessor>();
            var serviceScopeFactory = app.ApplicationServices.GetRequiredService <IServiceScopeFactory>();

            HttpContextProvider.ConfigureAccessor(httpContextAccessor, serviceScopeFactory);
            return(app);
        }
 public PostLoginController()
 {
     _routes = new Routes();
     var contextProvider = new HttpContextProvider();
     _usersApi = new UsersApi(contextProvider);
     _createCatalogFlow = new CreateCatalogFlow(contextProvider, new CookieStateProvider());
     _applicationSettings = new ApplicationSettings();
     _appLinksApi = new AppLinksApi();
 }
        protected void Application_Start()
        {
            RegisterRoutes(RouteTable.Routes);
            var httpContextProvider     = new HttpContextProvider(HttpContext.Current);
            var controllers             = new [] { typeof(HomeController), typeof(AccountController) };
            var includeHandlingSettings = (IIncludeHandlingSettings)ConfigurationManager.GetSection("includeHandling");

            DependencyResolver.InitializeWith(new QnDDepResolver(httpContextProvider, includeHandlingSettings, controllers));
            ControllerBuilder.Current.SetControllerFactory(new IoCControllerFactory());
        }
Exemple #9
0
        public static MultitenancyOptionsBuilder <TTenant> AddOwin <TTenant>(this MultitenancyOptionsBuilder <TTenant> builder)
            where TTenant : class
        {
            // this service will only work when
            //  IAppBuilder.UseRequestScopeContext() middleware has been activated.

            var provider = new HttpContextProvider();

            builder.HttpContextProvider = provider;
            builder.Services.AddSingleton <IHttpContextProvider>(provider);
            return(builder);
        }
Exemple #10
0
        public void ShouldSetAndRestoreHttpContextFromInitializationContext()
        {
            HttpContext.Current = null;
            HttpContext httpContext = new HttpContext(new HttpRequest(string.Empty, "http://url", string.Empty), new HttpResponse(new StringWriter()));

            using (HttpContextProvider provider = new HttpContextProvider())
            {
                provider.SetInitializationContext(new RequestInitializationContext(new Request(), new Response())
                {
                    HttpContext = httpContext
                });

                Assert.Equal(httpContext, HttpContext.Current);
            }

            Assert.Null(HttpContext.Current);
        }
        public static MultitenancyOptionsBuilder <TTenant> AddAspNetCore <TTenant>(this MultitenancyOptionsBuilder <TTenant> builder)
            where TTenant : class
        {
            var httpContextAccesser = builder.Services.FindServiceInstance <IHttpContextAccessor>();

            if (httpContextAccesser == null)
            {
                httpContextAccesser = new HttpContextAccessor();
                builder.Services.AddSingleton <IHttpContextAccessor>(httpContextAccesser);
            }

            var provider = new HttpContextProvider(httpContextAccesser);

            builder.HttpContextProvider = provider;
            builder.Services.AddSingleton <IHttpContextProvider>(provider);
            return(builder);
        }
        private WebAuditData GetWebAuditData(int applicationId, string lang, int?RelatedRecordId, string assignedCode, string code, string data)
        {
            HttpContextProvider.Capture();

            var httpContext = HttpContextProvider.Get();

            return(new WebAuditData
            {
                ApplicationId = applicationId,
                UserName = httpContext.User.Identity.Name,
                RoleName = httpContext.User.Identity.GetRoleName(),
                Lang = (string.IsNullOrEmpty(lang) ? httpContext.Items["Lang"]?.ToString() : lang),
                RelatedRecordId = RelatedRecordId,
                IP = httpContext.Request.GetClientIpAddress(),
                BrowserName = httpContext.Request.Browser.Browser,
                BrowserVersion = httpContext.Request.Browser.Version,
                SessionId = httpContext.Session.SessionID,
                AssignedCode = assignedCode,
                Code = code,
                Data = data
            });
        }
        /// <summary>
        /// 格式化 最终输出到elk的核心部分
        /// </summary>
        /// <param name="logEvent"></param>
        /// <param name="output"></param>
        private static void FormatContent(LogEvent logEvent, TextWriter output)
        {
            if (logEvent == null)
            {
                throw new ArgumentNullException(nameof(logEvent));
            }
            if (output == null)
            {
                throw new ArgumentNullException(nameof(output));
            }

            output.Write('{');

            // 读取相关配置
            var logConfigRootDTOInfo = JsonConfigUtils.GetAppSettings <LogConfigRootDTO>(AppSettingsFileNameConfig.AppSettingsFileName, "LogFiedOutPutConfigs");

            if (logConfigRootDTOInfo == null)
            {
                return;
            }

            // 写入所有的项目配置项的字段 在appsetting中配置的 输出elk节点的数据字段
            foreach (var item in logConfigRootDTOInfo.ConfigsInfo)
            {
                switch (item.FiedName)
                {
                //case "orgid":
                //    WritePropertyAndValue(output, "method", HttpContextProvider.GetCurrent().Request.Method);
                //    output.Write(",");
                //    break;
                default:
                    WritePropertyAndValue(output, item.FiedName, item.FiedValue);
                    output.Write(",");
                    break;
                }
            }
            // 写入http对应的信息数据
            if (HttpContextProvider.GetCurrent() != null && HttpContextProvider.GetCurrent().Request != null)
            {
                if (!string.IsNullOrEmpty(HttpContextProvider.GetCurrent().Request.Method))
                {
                    WritePropertyAndValue(output, "method", HttpContextProvider.GetCurrent().Request.Method);
                    output.Write(",");
                }
                // 输出请求页面url
                if (!string.IsNullOrEmpty(HttpContextProvider.GetCurrent().Request.Path))
                {
                    WritePropertyAndValue(output, "requestUrl", HttpContextProvider.GetCurrent().Request.Path.ToString());
                    output.Write(",");
                }
                // 输出携带token
                if (HttpContextProvider.GetCurrent().Request.Headers["Authorization"].FirstOrDefault() != null)
                {
                    WritePropertyAndValue(output, "Authorization", HttpContextProvider.GetCurrent().Request.Headers["Authorization"].FirstOrDefault());
                    output.Write(",");
                }
                // 输出请求参数
                if (!string.IsNullOrEmpty(HttpContextProvider.GetCurrent().Request.Method))
                {
                    string contentFromBody = ParamsHelper.GetParams(HttpContextProvider.GetCurrent());
                    WritePropertyAndValue(output, "requestParam", contentFromBody);
                    output.Write(",");
                }
                // 输出请求方法类型
                if (!string.IsNullOrEmpty(HttpContextProvider.GetCurrent().Request.Method))
                {
                    WritePropertyAndValue(output, "method", HttpContextProvider.GetCurrent().Request.Method);
                    output.Write(",");
                }
            }
            // 输出请求时间戳
            WritePropertyAndValue(output, "timestamp", logEvent.Timestamp.ToString("o"));
            output.Write(",");

            // 输出日志级别
            WritePropertyAndValue(output, "level", logEvent.Level.ToString());
            output.Write(",");

            // 输出log内容
            WritePropertyAndValue(output, "executeResult", logEvent.MessageTemplate.Render(logEvent.Properties));

            if (logEvent.Exception != null)
            {
                output.Write(",");
                WritePropertyAndValue(output, "exception", logEvent.Exception.ToString());
            }

            WriteProperties(logEvent.Properties, output);

            output.Write('}');
        }
Exemple #14
0
 protected void OnEndRequest(object sender, EventArgs e)
 {
     HttpContextProvider.OnEndRequest();
 }
Exemple #15
0
 protected void OnPreRequestHandlerExecute(object sender, EventArgs e)
 {
     HttpContextProvider.OnBeginRequest();   // preserves HttpContext.Current for use across async/await boundaries.
 }