1. 程式人生 > >ASP.NET Core WebAPI 開啟靜態網頁,設定主頁,跨域,Json保持原始大小寫,新增MIME,解除大檔案上傳限制

ASP.NET Core WebAPI 開啟靜態網頁,設定主頁,跨域,Json保持原始大小寫,新增MIME,解除大檔案上傳限制

開啟靜態網頁

Startup.Configure:

app.UseStaticFiles();

設定主頁

Startup.Configure:

DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();
defaultFilesOptions.DefaultFileNames.Clear();
defaultFilesOptions.DefaultFileNames.Add("index.html");
app.UseDefaultFiles(defaultFilesOptions);

重要提示,程式碼是有順序的:

UseDefaultFiles-UseStaticFiles-UseMvc

彙總:

Startup.Configure:

            DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();
            defaultFilesOptions.DefaultFileNames.Clear();
            defaultFilesOptions.DefaultFileNames.Add("index.html");
            app.UseDefaultFiles(defaultFilesOptions);

            app.UseStaticFiles();

            app.UseMvc();

跨域

Startup.Configure:

app.UseCors(builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader().AllowCredentials());

Json保持原始大小寫

Startup.ConfigureServices:

services.AddMvc().AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());

新增MIME

Startup.Configure:

            var provider = new FileExtensionContentTypeProvider();
            provider.Mappings[".osm"] = "application/octet-stream";
            app.UseStaticFiles(new StaticFileOptions()
            {
                ContentTypeProvider = provider
            });

解除大檔案上傳限制(做好驗證,防攻擊)

Program.BuildWebHost:

public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args).UseStartup<Startup>().UseKestrel(options =>
            {
                //所有controller都不限制post的body大小
                options.Limits.MaxRequestBodySize = null;
            }).Build();

Startup.ConfigureServices:

            //大檔案上傳
            services.Configure<FormOptions>(options =>
            {
                options.ValueLengthLimit = int.MaxValue;
                options.BufferBodyLengthLimit = long.MaxValue;
                options.MultipartBoundaryLengthLimit = int.MaxValue;
                options.MultipartBodyLengthLimit = long.MaxValue;
            });