您好,欢迎来到华拓科技网。
搜索
您的当前位置:首页ASP.NET Core WebAPI_Program.cs小记

ASP.NET Core WebAPI_Program.cs小记

来源:华拓科技网
public class Program
{
    public static void Main(string[] args)
    {
        var builder = WebApplication.CreateBuilder(args);

        var services = builder.Services;

        if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Development")
        {
            // 开发环境
            // 环境变量可在"配置启动项目"中临时设置
            services.AddSwaggerGen(); // 注册Swagger文档(需要在管道中启用)
            /**
             *  令Swagger读取XML文档数据
             *  在项目文件中添加<PropertyGroup><GenerateDocumentationFile>true</GenerateDocumentationFile></PropertyGroup>以生成XML文档
             */
            services.AddSwaggerGen(options =>
            {
                // 获取 XML 文档的路径
                var xmlFile = $"{System.Reflection.Assembly.GetExecutingAssembly().GetName().Name}.xml";
                var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
                options.IncludeXmlComments(xmlPath);
            });
        }

        services.AddDbContext<ThisDbContext>(); // 注册DB支持
        services.AddControllers() // 注册控制器(需要在管道中启用)
            // 使用System.Text.Json:
            //.AddJsonOptions(options =>
            //{
            //    options.JsonSerializerOptions.ReferenceHandler = System.Text.Json.Serialization.ReferenceHandler.IgnoreCycles; // 忽略循环引用
            //    options.JsonSerializerOptions.PropertyNamingPolicy = null; // 保持原有命名(PascalCase)
            //});
             // 使用NewtonsoftJson:
            .AddNewtonsoftJson(options =>
            {
                options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; // 忽略循环引用
                options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver(); // 保持原有命名策略(PascalCase)
            });

        //services.AddAuthentication(); // 注册身份验证(需要在管道中启用)
        //services.AddAuthorization(); // 注册授权验证(需要在管道中启用)

        services.AddCors(options =>
        {   // CorsPolicy为跨域策略名(可选参数)
            options.AddPolicy("CorsPolicy", builder =>
            {
                builder
                    .AllowAnyOrigin()   // AllowAnyOrigin允许任何来源的跨域请求(.WithOrigins(url) 仅允许指定来源的跨域请求)
                                        // 注意: URL末端切勿加上"/"
                    .AllowAnyMethod()   // 允许任何HTTP方法
                    .AllowAnyHeader();  // 允许任何Header
                                        //.AllowCredentials();// 允许凭据(授权/身份验证)
                                        //                    // 1/2/3为默认选项 4需要人为开启
                                        //                    // 设置项不允许均为AllowAnyxxx()
            });
        });

        var app = builder.Build();

        //app.UseHttpsRedirection(); // 将所有 HTTP 请求重定向为 HTTPS 请求

        app.UseStaticFiles(); // 静态文件支持

        //app.UseAuthentication(); // 身份验证(未注册服务则仅执行默认策略)
        //app.UseAuthorization(); // 授权验证(未注册服务则仅执行默认策略)(授权验证基于身份验证成功后 该身份携带的"角色"种类)

        if (app.Environment.IsDevelopment())
        {
            app.UseSwagger();
            app.UseSwaggerUI();
        }
        //else
        //{
        //    app.UseExceptionHandler("/Home/Error");  // 错误处理(重定向到错误页面)
        //    app.UseHsts();  // 强制浏览器仅通过 HTTPS 访问
        //}

        // 分析传入请求的URL并根据配置的路由模板(通常是在MapControllers等方法中定义的路由)进行匹配
        // 为后续的中间件(UseEndpoints或UseAuthorization)提供路由信息
        //app.UseRouting(); 

        app.MapControllers();
        app.UseCors("CorsPolicy");

        app.Run();
    }
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo6.cn 版权所有 赣ICP备2024042791号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务