ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

.NET Core中Startup.cs文件的作用

2022-04-19 21:03:48  阅读:241  来源: 互联网

标签:Core app Startup System Microsoft cs using public


我们在建立.net core项目中Startup.cs文件必不可少,最近在面试中别人提问到Startup.cs中有哪三种方法,以及对应的作用是什么,没有答复的很好,因此也总结记录一下。

以前我们在创建.net项目的时候会看到两个文件:

  1. global.asax 文件,可以在启动 Web 应用程序期间编写代码来执行的一个地方
  2. web.config 文件,用来包含应用程序需要执行的所有配置参数

在 ASP.NET Core 中,这些文件全部消失,取而代之的是使用 Startup.cs 加载配置和启动代码

Startup.cs 文件中有一个 Startup 类,在这个类中可以配置应用程序,甚至配置配置源

下面先看看原文件的结构

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;

namespace HelloWorld
{
    public class Startup
    {
        // 该方法在运行时被调用。
        // 可以使用该方法将服务添加到容器中
        // 更多信息配置应用程序的信息,可以查看 https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
        }

        // 该方法在运行时被调用
        // 可以使用该方法来配置 HTTP 请求管道
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.Run(async (context) =>
            {
                await context.Response.WriteAsync("Hello World!");
            });
        }
    }
}

Startup类里面必须公开包含两个方法以及一个构造函数:

1、ConfigureServices()

public void ConfigureServices(IServiceCollection services){}

用于定义应用程序所需要的服务的地方,比如我们所说的注入各种服务就是在这里

2、Configure

public void Configure(IApplicationBuilder app, IHostingEnvironment env){}

用于定义请求管道中的中间件,app.Run方法设置的地方

3、还有一个是Startup本身的一个构造函数,加上之后有三个方法。

  public Startup() 
        { 
            var builder = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("AppSettings.json"); 
            Configuration = builder.Build(); 
        }

示例:将HolleWord!输出改成从配置文件中获取内容并输出

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;

namespace HelloWorld
{
    public class Startup
    {
        public Startup() 
        { 
            var builder = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("AppSettings.json"); 
            Configuration = builder.Build(); 
        }

        public IConfiguration Configuration { get; set; }

        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
        }

        // 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();
            }

            app.Run(async (context) =>
            {
                var msg = Configuration["message"];
                await context.Response.WriteAsync(msg);
            });
        }
    }
}

标签:Core,app,Startup,System,Microsoft,cs,using,public
来源: https://www.cnblogs.com/morehappy/p/16167274.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有