首页 > 其他分享 >Core WebAPI 中 Program.cs和Startup.cs认识 (高频考点)

Core WebAPI 中 Program.cs和Startup.cs认识 (高频考点)

时间:2024-07-09 16:59:04浏览次数:10  
标签:WebAPI Core app Startup services cs public 注入

1.Program.cs认识

    public class Program
    {
        public static void Main(string[] args)
        {    //Build方法构建出一个web应用程序,然后去运行
             CreateWebHostBuilder(args) //调用下面的方法,返回一个IWebHostBuilder对象
             .Build()//用上面返回的IWebHostBuilder对象创建一个IWebHost
             .Run();//运行上面创建的IWebHost对象从而运行我们的Web应用程序。换句话说就是启动一个一直运行监听http请求的任务
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args) //使用默认的配置信息来初始化一个新的IWebHostBuilder实例
                .UseStartup<Startup>(); // 为WebHost指定了Startup类
     }

2.Startup.cs认识

    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration; //用来读取配置文件信息的对象
        }
        public IConfiguration Configuration { get; }
        // This method gets called by the runtime. Use this method to add services to the container.
        //后续要注入自己的服务通过在这个方法里面注入
        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        }
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        //后续要注入自己的中间件通过在这个方法里面注入
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseCookiePolicy();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
        }
    }

 

ConfigureServices方法是用来把services(各种服务, 例如identity, ef, mvc等等包括第三方的, 或者自己写的)加入(register)到container(asp.net core的容器)中去, 并配置这些services。

这个container是用来进行dependency injection的(依赖注入)。所有注入的services(此外还包括一些框架已经注册好的services) 。

就是方便在后面写代码(需要)的时候,将它们注入(inject)进去,也即在需要的地方能直接使用(会进入ConfigureServices获取相应的对象)。

例如上面的Configure方法的参数:app, env, loggerFactory都是注入进去的services。

Configure方法是asp.net core程序用来具体指定如何处理每个http请求的, 例如我们可以让这个程序知道我使用mvc来处理http请求, 那就调用app.UseMvc()这个方法就行。

应用程序启动的流程图:

 

 

标签:WebAPI,Core,app,Startup,services,cs,public,注入
From: https://www.cnblogs.com/mjxxsc/p/18292299

相关文章

  • 跨站请求伪造(CSRF)攻击原理及预防手段
    1、什么是跨站请求伪造?CSRF(Cross-siteRequestForgery,跨站请求伪造)攻击是一种常见的Web攻击,它利用用户在登录某个网站后的有效session来发送恶意请求。攻击者通过引导用户访问恶意网站,将用户的数据提交到目标网站,欺骗目标网站相信该请求是用户发送的。CSRF攻击的关键是攻击者可......
  • .net core部署linux下载文件 文件为中文下载
    在项目中,需要下载模板,某个文件夹下有excel文件或者word等 文件名为中文的时候在linux服务器下载不了  如果直接写路由的话在windows下是可以直接访问的,但是core部署在linux上所以会有些不同第一种:写一个接口使用流下载[httpget("download")]publicasyncTask<FileResult......
  • Asp.NET Core WebAPI 设置环境变量值ASPNETCORE_ENVIRONMENT
    默认情况下发布后的环境变量是Production方式一:在文件夹PublishProfiles下的FolderProfile.pubxml文件增加配置<Project><PropertyGroup><EnvironmentName>Development</EnvironmentName></PropertyGroup></Project>表示发布后通过builder.Environment.Env......
  • NetCore 模板引擎
    HTML模板<!DOCTYPEhtml><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>@Model.Title</title></hea......
  • electron 跨域/CSP问题
    请求报错:Refusedtoconnectto'http://127.0.0.1:8000/get?name=kv-grpc'becauseitviolatesthefollowingContentSecurityPolicydirective:"default-src'self'".Notethat'connect-src'wasnotexplicitlyset,so'......
  • mormot.core.os--TSynLocker和TSynLocked
    mormot.core.os--TSynLocker和TSynLockedTLightLock{****************TSynLocker/TSynLocked和低级线程特性}type///一个轻量级的独占非重入锁,存储在PtrUInt值中//-在自旋一段时间后调用SwitchToThread,但不使用任何读写操作系统API//-警告:方法是非重入......
  • CoreDNS 概述及运维实践
     概述什么是DNS?域名系统(英语:DomainNameSystem,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。DNS不仅方便了人们访问不同的互联网服务,更为很多应用提供了,动态服务发现和全局负载均衡......
  • csv工具类
    packagecom.cccp.utils.tool;importorg.springframework.util.CollectionUtils;importjavax.servlet.http.HttpServletResponse;importjava.io.BufferedWriter;importjava.io.IOException;importjava.io.OutputStreamWriter;importjava.lang.reflect.Field;im......
  • 基于eBPF的procstat软件追踪等待锁和持有锁的时间
    在并发编程中,锁的使用是保证线程安全的重要手段。然而,过度使用锁或者锁竞争可能导致性能瓶颈。为了分析程序中锁的使用情况,我们可以借助procstat软件来追踪程序加锁时间和等待锁的时间。procstat是一个基于eBPF(extendedBerkeleyPacketFilter)的软件,能够对系统的各种行为进......
  • 挂 CSDN,老问题了,现在开始盗我源码不管了
    挂CSDN,老问题了,现在开始盗我源码不管了,希望没有倒霉蛋来买,买了也别找我,我不维护这个项目了!挂壁链接:https://download.csdn.net/download/weixin_44087733/89352970之前盗我文章,把我内置保护链接去掉,嵌广告事,我不挂你名不解决。好,挂出来好使了,我也没追究啥。现在轮到我源码了,虽......