ASP.NET Core(兼容2.0&3.0) 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:(core 3.0 ConfigureServices中需包含services.AddControllers();)

app.UseCors(corsPolicyBuilder => corsPolicyBuilder.AllowAnyMethod().AllowAnyOrigin());

Json保持原始大小寫

Startup.ConfigureServices:

2.0:

<PackageReference Include="Newtonsoft.Json" Version="12.0.2" />

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

3.0 方案1修改原生方法:

            services.AddControllers().AddJsonOptions(options =>
            {
                options.JsonSerializerOptions.DictionaryKeyPolicy = null;
                options.JsonSerializerOptions.PropertyNamingPolicy = null;
            });

3.0 方案2用NewtonsoftJson替換原生方法:

<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.0.0" />

            services.AddControllers()
            //原生Json服務中文、變量、註釋支持差,這裏切換爲Newtonsoft提供的Json服務,必須引用Microsoft.AspNetCore.Mvc.NewtonsoftJson,引用Newtonsoft.Json此處無效
            .AddNewtonsoftJson(options =>
            {
                //保持Json屬性/變量大小寫
                options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver();
                // 忽略循環引用
                options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
                // 設置時間格式
                options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
                // 如字段爲null值,該字段不會返回到前端
                // options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore; 
            });

添加MIME

Startup.Configure:

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章