Esempio n. 1
0
        // Methods
        public static MdpBuilder AddQuartz(this MdpBuilder mdpBuilder)
        {
            #region Contracts

            if (mdpBuilder == null)
            {
                throw new ArgumentException(nameof(mdpBuilder));
            }

            #endregion

            // ConfigureServices
            mdpBuilder.HostBuilder.ConfigureServices((hostContext, services) =>
            {
                // Quartz
                services.AddQuartz(options =>
                {
                    // ScopedJob
                    options.UseMicrosoftDependencyInjectionScopedJobFactory();
                });

                // QuartzHostedService
                services.AddQuartzHostedService(options =>
                {
                    // WaitForJobsToComplete
                    options.WaitForJobsToComplete = true;
                });
            });

            // Return
            return(mdpBuilder);
        }
Esempio n. 2
0
        // Methods
        public static MdpBuilder AddMvc(this MdpBuilder mdpBuilder)
        {
            #region Contracts

            if (mdpBuilder == null)
            {
                throw new ArgumentException(nameof(mdpBuilder));
            }

            #endregion

            // ConfigureServices
            mdpBuilder.HostBuilder.ConfigureServices((hostContext, services) =>
            {
                // MvcBuilder
                var mvcBuilder = services.AddMvc();
                if (mvcBuilder == null)
                {
                    throw new InvalidOperationException($"{nameof(mvcBuilder)}=null");
                }

                // MvcOptions
                mvcBuilder.AddMvcOptions((options) =>
                {
                    // ApiOutput
                    {
                        // NotAcceptable
                        options.ReturnHttpNotAcceptable = true;

                        // BrowserAcceptHeader
                        options.RespectBrowserAcceptHeader = true;

                        // OutputFormatters
                        {
                            // XML
                            options.OutputFormatters.Add(new XmlSerializerOutputFormatter());

                            // Null
                            options.OutputFormatters.RemoveType <HttpNoContentOutputFormatter>();
                            options.OutputFormatters.Insert(0, new NullOutputFormatter());
                        }
                    }
                });

                // RazorOptions
                mvcBuilder.AddRazorOptions((options) =>
                {
                    // ViewLocationFormats
                    {
                        // Area
                        options.AreaViewLocationFormats.Add("/Views/{2}/{1}/{0}.cshtml");
                        options.AreaViewLocationFormats.Add("/Views/{2}/Shared/{0}.cshtml");
                    }
                });

                // ApiVersion
                mvcBuilder.Services.AddApiVersioning((options) =>
                {
                    // Report
                    options.ReportApiVersions = true;

                    // Reader
                    options.ApiVersionReader = new HeaderApiVersionReader("api-version");

                    // Default
                    options.ApiVersionSelector = new CurrentImplementationApiVersionSelector(options);
                    options.AssumeDefaultVersionWhenUnspecified = true;
                });

                // ModuleWebAsset
                mvcBuilder.AddModuleWebAsset();

                // ModuleApplicationPart
                mvcBuilder.AddModuleApplicationPart();
            });

            // Return
            return(mdpBuilder);
        }