ASP.NET Core WebAPI 開啟靜態網頁,設定主頁,跨域,Json保持原始大小寫,新增MIME,解除大檔案上傳限制
阿新 • • 發佈:2019-01-09
開啟靜態網頁
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;
});