在 ASP.NET Core 6/NET 8.0 如何添加 Startup.cs

ops/2024/10/22 0:23:58/

目录

如何添加Startup.cs文件

我们还能做什么?

 我的项目做法参考


如何添加Startup.cs文件

使用 ASP.NET Core 6.0项目,您将找不到Startup.cs文件。默认情况下,此文件将被删除,并且是将注册依赖项和中间件放到了Program.cs中。但是,如果您是 Startup.cs 的粉丝或将项目升级到 ASP.NET Core 6.0,你可能仍想要使用 Startup.cs 文件。因此,在这篇文章中,让我们将了解如何在 ASP.NET Core 6 项目中添加 Startup.cs

使用 ASP.NET Core 6.0项目时,您的Program.cs文件可能会这样。

Program.cs是 ASP.NET Core Web 6应用模板的文件

var builder = WebApplication.CreateBuilder(args);// Add services to the container.
builder.Services.AddRazorPages();var app = builder.Build();// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{app.UseExceptionHandler("/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.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();

正如您在此处看到的,服务和中间件注册现在是此文件的一部分。而 Statup.cs 有 2 个方法 ConfigureServices() 和 Configure(),我们在方法 ConfigureServices 中注册依赖关系/服务,在 Configure 中注册中间件。

现在使用 Program.cs,您需要在第 4 行之后注册您的服务/依赖项builder.Services.AddRazorPages();,并在第 6 行之后注册中间件var app = builder.Build();。请记住,在管道中注册中间件时,顺序很重要。

若要将 Startup.cs 添加到 ASP.NET Core 6.0 项目中 ,请添加一个名为Startup.cs的新文件 并添加以下代码。

public class Startup
{public Startup(IConfiguration configuration){Configuration = configuration;}public IConfiguration Configuration { get; }public void ConfigureServices(IServiceCollection services){services.AddRazorPages();}public void Configure(WebApplication app, IWebHostEnvironment env){if (!app.Environment.IsDevelopment()){app.UseExceptionHandler("/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.UseRouting();app.UseAuthorization();app.MapRazorPages();app.Run();}
}

构造函数和这两个方法中的代码是非常熟悉。从文件Program.cs中删除依赖项注册的代码并将其放入ConfigureService()方法中。同样,中间件注册码也从文件中删除并放入Configure() 方法中。

接下来,我们需要介绍 Program.cs 如何调用 Startup.cs 。因此,请将文件代码更新为以下内容。

var builder = WebApplication.CreateBuilder(args);var startup = new Startup(builder.Configuration);
startup.ConfigureServices(builder.Services);var app = builder.Build();
startup.Configure(app, builder.Environment);

Startup.cs 类所需的所有对象都存在于 builder 对象中,因此我们可以将所需的对象传递给ConfigureService()Configure()方法。就是这样。您的项目应该正常运行

我们还能做什么?

这是添加Startup.cs的自定义方式,因此实际上我们不必遵循任何与该类相关的内置规则。我从不喜欢ConfigureService()Configure()这两个名称,因为它们并没有确切定义它们的用途。以前,无法重命名这些名称,但现在我可以给出一个有意义的名称。类似地,ConfigureService变成RegisterServicesConfigure变成SetupMiddleware

var startup = new Startup(builder.Configuration);
startup.RegisterServices(builder.Services);var app = builder.Build();
startup.SetupMiddlewares(app, builder.Environment);

在 ASP.NET Core 6 如何添加 Startup.cs | .NET 开发者指北 (luoyunchong.github.io)

在 ASP.NET Core 6 中添加Startup.cs的整洁方式 | .NET 开发者指北 (luoyunchong.github.io)

 我的项目做法参考

.NET 8.0

Program.cs

using Server.Start;var builder = WebApplication.CreateBuilder(args);// Add services to the container.
var startup = new Startup(builder.Configuration);
startup.ConfigureServices(builder.Services);builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();builder.Services.AddRazorPages();
var app = builder.Build();
startup.Configure(app, builder.Environment);// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{app.UseSwagger();app.UseSwaggerUI();
}app.UseAuthorization();app.MapControllers();app.Run();

手动添加Startup.cs

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Server.IService;
using Server.Service;
using Server.Configuration;
using Server.IConfiguration;namespace Server.Start
{public class Startup{public Startup(Microsoft.Extensions.Configuration.IConfiguration configuration){Configuration = configuration;}public Microsoft.Extensions.Configuration.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.AddRazorPages();services.AddSingleton<IUtils, Utils>();services.AddTransient<IConfiguration.IConfiguration, Configuration.Configuration>();services.AddTransient<IEFContext.IEFContext, EFContext.EFContext>();services.AddTransient<ILoginService, LoginService>();services.AddTransient<IMenuService, MenuService>();services.AddTransient<IUserService, UserService>();services.AddControllers();}// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.public void Configure(IApplicationBuilder app, IWebHostEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}app.UseRouting();app.UseAuthorization();app.UseEndpoints(endpoints =>{endpoints.MapControllers();});}}
}

此添加Startup是为了ILoginServiceLoginService等进行注册依赖关系。


http://www.ppmy.cn/ops/127416.html

相关文章

Element Ui el-table列表中的tooltip内容过长超出屏幕换行显示

elementui-table组件列表中的tooltip内容过长超出屏幕换行显示内容,虽然el-table列属性中带的有show-overflow-tooltip&#xff0c;可以设置内容超出列宽度显示为…&#xff0c;且有tooltip提示全部内容&#xff0c;但是内容过多时&#xff0c;提示会超出屏幕&#xff1a; 只有…

后裔采集器的安装与使用

一、后裔采集器是什么 ‌‌ 后羿采集器是一款由原谷歌技术团队研发的智能网页数据采集软件。通俗讲就是一款采集数据的软件。 二、下载链接 后羿采集器_真免费&#xff01;导出无限制网络爬虫软件_人工智能数据采集软件后羿采集器是由前谷歌搜索技术团队基于人工智能…

2024年华为OD机试真题-空栈压数-Java-OD统一考试(E卷)

最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客 每一题都含有详细的解题思路和代码注释,精编c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,发现新题及时跟新。 题目描述: 向一个空栈压入…

探索桂林:使用SpringBoot构建的旅游平台

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理桂林旅游景点导游平台的相关信息成为必然。…

群晖前面加了雷池社区版,安装失败,然后无法识别出用户真实访问IP

有nas的相信对公网都不模式&#xff0c;在现在基础上传带宽能有100兆的时代&#xff0c;有公网代表着家里有一个小服务器&#xff0c;像百度网盘&#xff0c;优酷这种在线服务都能部署为私有化服务。但现在运营商几乎不可能提供公网ip&#xff0c;要么自己买个云服务器做内网穿…

反弹Shell

常见一句话反弹Shell 反弹攻击机开监听端口,靶机主动去连 正弹靶机开启端口,攻击机去主动去连 正向连接 正向shell&#xff1a;客户端(我)想要获得服务端的shell 假设我们攻击了一台机器&#xff0c;打开了该机器的一个端口&#xff0c;攻击者在自己的机器去连接目标机器&am…

React开发一个WebSocket

export default class SocketService {static instance null;static get Instance() {if (!this.instance) {this.instance new SocketService();}return this.instance;}// 和服务端连接的socket对象ws null;// 存储回调函数callBackMapping {};// 标识是否连接成功connec…

图书管理新纪元:Spring Boot进销存系统

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理图书进销存管理系统的相关信息成为必然。开…