コード例 #1
0
        public static void SignalRConfiguration(this IServiceCollection services, IConfiguration configuration)
        {
            services.AddSignalR()
            .AddJsonProtocol(x =>
            {
                x.PayloadSerializerOptions.IgnoreNullValues            = false;
                x.PayloadSerializerOptions.PropertyNameCaseInsensitive = false;
                x.PayloadSerializerOptions.WriteIndented = false;
            })
            .AddMessagePackProtocol()
            .AddStackExchangeRedis(o =>
            {
                o.ConnectionFactory = async writer =>
                {
                    var config = new StackExchange.Redis.ConfigurationOptions
                    {
                        AbortOnConnectFail = false,
                        ResolveDns         = true
                    };

                    config.EndPoints.Add(configuration.GetConnectionString("Redis"), 6379);
                    config.SetDefaultPorts();
                    var connection = await ConnectionMultiplexer.ConnectAsync(config, writer);
                    connection.ConnectionFailed += (_, e) =>
                    {
                        Console.WriteLine("Connection to Redis failed.");
                    };

                    if (!connection.IsConnected)
                    {
                        Console.WriteLine("Did not connect to Redis.");
                    }

                    return(connection);
                };
            });
        }
コード例 #2
0
ファイル: Startup.cs プロジェクト: uzbekdev1/Corporate-Chat
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddOptions();

            services.AddControllers();

            services.AddMvc(config =>
            {
                config.Filters.Add(new ProducesAttribute("application/json"));
                //config.Filters.Add(new ConsumesAttribute("application/json"));
            })
            .AddFluentValidation()
            .AddJsonOptions(x =>
            {
                x.JsonSerializerOptions.WriteIndented = false;
                x.JsonSerializerOptions.PropertyNameCaseInsensitive = false;
                x.JsonSerializerOptions.IgnoreNullValues            = false;
            });

            services.Configure <GzipCompressionProviderOptions>(options => options.Level = CompressionLevel.Optimal);

            services.AddResponseCompression(options => options.Providers.Add <GzipCompressionProvider>());

            services.AddSignalR()
            .AddJsonProtocol(x =>
            {
                x.PayloadSerializerOptions.IgnoreNullValues            = false;
                x.PayloadSerializerOptions.PropertyNameCaseInsensitive = false;
                x.PayloadSerializerOptions.WriteIndented = false;
            })
            .AddMessagePackProtocol()
            .AddStackExchangeRedis(o =>
            {
                o.ConnectionFactory = async writer =>
                {
                    var config = new StackExchange.Redis.ConfigurationOptions
                    {
                        AbortOnConnectFail = false,
                        ResolveDns         = true
                    };

                    config.EndPoints.Add(Configuration.GetConnectionString("Redis"), 6379);
                    config.SetDefaultPorts();
                    var connection = await ConnectionMultiplexer.ConnectAsync(config, writer);
                    connection.ConnectionFailed += (_, e) =>
                    {
                        Console.WriteLine("Connection to Redis failed.");
                    };

                    if (!connection.IsConnected)
                    {
                        Console.WriteLine("Did not connect to Redis.");
                    }

                    return(connection);
                };
            });

            services.AddCors();

            services.AddEntityFrameworkSqlServer()
            .AddDbContext <ChatContext>((serviceProvider, options) =>
            {
                options.UseApplicationServiceProvider(serviceProvider);
                options.UseInternalServiceProvider(serviceProvider);
                options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"));
            });

            services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();
            services.AddScoped <ChatContext>();

            // Health Checks
            services.AddHealthChecks()
            .AddSqlServer(Configuration.GetConnectionString("DefaultConnection"), name: "MSSQL")
            .AddRedis(Configuration.GetConnectionString("Redis"), name: "REDIS");

            services
            .AddHealthChecksUI();

            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo {
                    Title = "Chat API", Version = "v1"
                });
                c.EnableAnnotations();
            });
        }