Beispiel #1
0
        // Configure your AppHost with the necessary configuration and dependencies your App needs
        public override void Configure(Container container)
        {
            Plugins.Add(new SharpPagesFeature()); // enable server-side rendering, see: https://sharpscript.net/docs/sharp-pages

            // This is already done for you however in many cases you may want to add
            // your own custom items that will be a part of this cascading app settings provider
            MultiAppSettingsBuilder multiAppSettingsBuilder = new MultiAppSettingsBuilder();

            multiAppSettingsBuilder
            .AddNetCore(_coreConfig);     // https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-3.1#default-configuration

            // You can add text files or your own dictionary of custom values if you want

            AppSettings = multiAppSettingsBuilder.Build();
            JsConfig.TreatEnumAsInteger = true;

            SetConfig(new HostConfig
            {
                UseCamelCase                   = true,
                UseSameSiteCookies             = true,
                AddRedirectParamsToQueryString = true,
                DebugMode = AppSettings.Get(nameof(HostConfig.DebugMode), HostingEnvironment.IsDevelopment()),
            });

            // for our app we will use an inmemory database.  This can be replaced with no
            // code changes for sql server, mysql or any of the ormlite providers

            Plugins.Add(new AutoQueryDataFeature()
            {
                MaxLimit = int.MaxValue
            });

            Plugins.Add(new AdminFeature());
            container.Register <IDbConnectionFactory>(c => new OrmLiteConnectionFactory(":memory:", SqliteDialect.Provider));

            using (var db = container.Resolve <IDbConnectionFactory>().Open())
            {
                db.CreateTableIfNotExists <PostLog>();
            }



            GatewayRequestFilters.Add((req, dto) =>
            {
                if (dto is PostRequest || dto is PostQueryRequest)
                {
                    using (var db = Resolve <IDbConnectionFactory>().Open())
                    {
                        using (var trans = db.OpenTransaction())
                        {
                            db.Insert <PostLog>(new PostLog()
                            {
                                EntryDate   = DateTime.UtcNow,
                                Identifier  = (dto is PostRequest) ? ((PostRequest)dto).Id : string.Empty,
                                RequestType = dto.ToString(),
                                FilterType  = FilterType.GatewayFilter
                            });
                            trans.Commit();
                        }
                    }
                }
            });

            GlobalRequestFilters.Add((req, res, dto) =>
            {
                if (dto is PostRequest || dto is PostQueryRequest)
                {
                    using (var db = Resolve <IDbConnectionFactory>().Open())
                    {
                        using (var trans = db.OpenTransaction()) {
                            db.Insert <PostLog>(new PostLog()
                            {
                                EntryDate   = DateTime.UtcNow,
                                Identifier  = (dto is PostRequest) ? ((PostRequest)dto).Id : string.Empty,
                                RequestType = dto.GetType().ToString(),
                                FilterType  = FilterType.RequestFilter
                            });
                            trans.Commit();
                        }
                    }
                }
            });

            container.AddTransient <IServiceGatewayFactory>(() => new CustomServiceGatewayFactory());
        }