Asp.net core 框架入门

概述

appsettings.json:配置文件,数据库连接字符串配置信息

Program.cs:程序入口文件(里面有个Main方法)

Startup.cs:启动配置文件

依赖项:管理项目所依赖的第三方组件的安装,配置,升级

Controller:控制器

Models:实体

Views:视图

namespace Sample01.Models
{/// <summary>/// 2018.11.19/// 祝雷/// 内容实体/// </summary>public class Content{/// <summary>/// 主键/// </summary>public int Id { get; set; }/// <summary>/// 标题/// </summary>public string title { get; set; }/// <summary>/// 内容/// </summary>public string content { get; set; }/// <summary>/// 状态 1正常 0删除/// </summary>public int status { get; set; }/// <summary>/// 创建时间/// </summary>public DateTime add_time { get; set; }/// <summary>/// 修改时间/// </summary>public DateTime modify_time { get; set; }}
}
namespace Sample01.Controllers
{/// <summary>/// Content控制器/// </summary>public class ContentController : Controller{/// <summary>/// 首页显示/// </summary>/// <returns></returns>public IActionResult Index(){var contents = new List<Content>();for (int i = 1; i < 11; i++){contents.Add(new Content { Id=i,title=$"{i}的标题",content= $"{i}的内容",status=1, add_time=DateTime.Now.AddDays(-i)}); }return View(new ContentViewModel { Contents=contents});} } 
}

依赖项注入DI

构造函数传参,松耦合,可测试,可替换,可维护

more:体系结构原则 - .NET | Microsoft Learn

https://www.cnblogs.com/youring2/p/10926590.html

概念我知道,但不知道怎么使用,是不是得去看看.net core的教程

生命周期

1.瞬态:

2.单例:

3.作用域:

builder.Services.AddTransient<IUserService,UserService>();

builder.Services.AddSingleton<IUserService,UserService>();

builder.Services.AddScoped<IUserService,UserService>();

???

注入方式

1.构造函数注入:

2.属性注入:

3.方法注入:

中间件

var builder= WebApplication.CreateBuilder(args);
var app= builder.Build();app.Use(async (context, next) =>
{await next.Invoke();//Invoke? 走下一个中间件
});app.Run(async context =>
{await context.Response.WriteAsync("你好你被中间件截胡了");//短路
});
app.Run();

1.静态文件中间件

app.UseStaticFiles();启用静态文件中间件

using Microsoft.Extensions.FileProviders;var builder= WebApplication.CreateBuilder(args);
var app= builder.Build();//app.Use(async (context, next) =>
//{
//    await next.Invoke();
//});//app.Run(async context =>
//{
//    await context.Response.WriteAsync("你好你被中间件截胡了");
//});
app.UseStaticFiles(new StaticFileOptions()
{FileProvider = new PhysicalFileProvider(Path.Combine(builder.Environment.ContentRootPath, "MyStaticFile")),RequestPath= "/StaticFiles"
});
app.Run();

创建该文件夹

2.改变静态文件访问地址(改变文件夹)

app.UseStaticFiles(new StaticFileOptions()
{FileProvider = new PhysicalFileProvider(Path.Combine(builder.Environment.ContentRootPath, "MyStaticFile")),RequestPath= "/StaticFiles"//https://localhost:7064/StaticFiles/1.png
});

因为缓存的原因原来的还能被打开

3.启用目录浏览

展示该站点下有哪些静态文件,服务可以访问

using Microsoft.Extensions.FileProviders;var builder= WebApplication.CreateBuilder(args);
var app= builder.Build();var fileProvider = new PhysicalFileProvider(Path.Combine(builder.Environment.ContentRootPath, "MyStaticFile"));//1.文件路径
var requestPath = "/MyImages";//2.请求路径//app.Use(async (context, next) =>
//{
//    await next.Invoke();
//});//app.Run(async context =>
//{
//    await context.Response.WriteAsync("你好你被中间件截胡了");
//});
app.UseStaticFiles(new StaticFileOptions()
{FileProvider = new PhysicalFileProvider(Path.Combine(builder.Environment.ContentRootPath, "MyStaticFile")),RequestPath= requestPath ,//3
});
app.UseDirectoryBrowser(new DirectoryBrowserOptions
{FileProvider = fileProvider,RequestPath = requestPath
}); //4.开启目录浏览
app.Run();

4.https重定向

app.UseHsts();
app.UseHttpsRedirection();//实现重定向 -当打开的是不安全的站点时自动跳转

5.读取配置

builder.Services.AddDirectoryBrowser();

app.MapGet("config1", (IConfiguration configuration) =>
{return configuration["msg"] + "_" + configuration["Logging:LogLevel:Default"];
});
app.MapGet("config2", (IConfiguration configuration) =>
{return configuration.GetValue<string>("msg");
});
app.MapGet("config3", (IConfiguration configuration) =>
{return configuration.GetSection("msg").Value;
});

IConfiguration //configuration构造

通过路由终结点来演示读取这个配置

builder.Services.AddDirectoryBrowser();
app.MapGet("config", (IConfiguration configuration) =>
{return configuration["msg"] + "_" + configuration["Logging:LogLevel:Default"];
});

通过GetValue方法获取

通过GetSection方法获取

5.2读取对象配置

using WebApplication5.Model;

app.MapGet("config4", (IConfiguration configuration) =>
{return configuration.GetSection("Person").Get<Person>();
});

6.环境

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/642577.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WampServer

开发笔记 推荐链接php无法保存SESSION问题部署SSL时候产生的问题 推荐链接 链接目录 php无法保存SESSION问题 php.ini文件和phpForApache.ini 文件 里面都有 对路径的控制&#xff0c;相关路径问题可能也需要进行修改&#xff0c;打开文件搜索wamp64或wamp 就可以看到了&…

“深入理解RabbitMQ交换机的原理与应用“

深入理解RabbitMQ交换机的原理与应用 引言1. RabbitMQ交换机简介介绍1.1 什么是RabbitMQ&#xff1f;1.1.1 消息中间件的作用1.1.2 RabbitMQ的特点和优势 1.2 RabbitMQ的基本概念1.2.1 队列1.2.2 交换机1.2.3 路由键 1.3 交换机的作用和分类1.3.1 直连交换机&#xff08;direct…

VS Code Json格式化插件-JSON formatter

&#x1f9aa;整个文件格式化 按快捷键Shift Alt F &#x1f96a;仅格式化选择内容 需要选择完整的json段落即&#xff1a;{} 或 [] 括起来的部分&#xff0c;再按快捷键Ctrl K F

社区公益培训系统功能说明

社区公益培训系统功能说明 本系统将用于社区面向居民开展的公益培训课程展示&#xff0c;在线报名&#xff0c;并按班级排课上课&#xff0c;上课时学员要扫码签到&#xff0c;经常旷课的学员将禁止再报名其他课程。 1. 用户注册与登录 - 提供用户注册和登录功能&#xff0c;…

鸿蒙不再兼容安卓,鸿蒙开发薪资高达4w+,程序员是否需转行鸿蒙?

鸿蒙系统的崛起 鸿蒙系统的推出经历了长时间的研发和完善&#xff0c;它是一款自主研发的操作系统&#xff0c;集成了最新的技术和创新理念。该系统具备卓越的安全性、兼容性和扩展性&#xff0c;因此备受关注。最初&#xff0c;鸿蒙系统主要应用于华为手机产品&#xff0c;但…

惬意上手Python —— 装饰器和内置函数

1. Python装饰器 Python中的装饰器是一种特殊类型的函数&#xff0c;它允许用户在不修改原函数代码的情况下&#xff0c;增加或修改函数的行为。 具体来说,装饰器的工作原理基于Python的函数也是对象这一事实&#xff0c;可以被赋值给变量、作为参数传递给其他函数或者作为其他…

比较有创意的网站

有创意的网站通常展示了独特的设计、交互或内容。以下是一些备受赞誉的有创意的网站&#xff0c;你可以参考&#xff1a; Awwwards: Awwwards 是一个评选并展示全球最优秀网站的平台。你可以在这里找到很多有创意的网站设计。 Awwwards CSS Design Awards: 类似于Awwwards&…

3d gaussian splatting笔记(paper部分翻译)

本文为3DGS paper的部分翻译。 基于点的&#x1d6fc;混合和 NeRF 风格的体积渲染本质上共享相同的图像形成模型。 具体来说&#xff0c;颜色 &#x1d436; 由沿射线的体积渲染给出&#xff1a; 其中密度 &#x1d70e;、透射率 &#x1d447; 和颜色 c 的样本是沿着射线以…

VSCode插件 —— Cody AI (免费AI助手!)

之前介绍过一款 阿里云免费的AI开发工具——通义灵码 TONGYI Lingma 本文再推荐一个可以极大提高开发前端开发效率的工具 —— Cody AI &#xff08;Sourcegraph&#xff09;&#xff0c;同样是免费的&#xff01; 不过&#xff0c;使用Cody AI需要有github 或 Google 、 git…

vue3相比vue2的效率提升

1、静态提升 2、预字符串化 3、缓存事件处理函数 4、Block Tree 5、PatchFlag 一、静态提升 在vue3中的app.vue文件如下&#xff1a; 在服务器中&#xff0c;template中的内容会变异成render渲染函数。 最终编译后的文件&#xff1a; 1.静态节点优化 那么这里为什么是两部分…

内网安全管理系统(保密管理系统)

在当今信息化的时代&#xff0c;企业的内网已经成为其核心资产的重要组成部分。 随着企业的快速发展和信息化程度的提升&#xff0c;内网安全问题日益凸显&#xff0c;如何保障内网的安全和机密信息的保密性&#xff0c;已经成为企业亟待解决的问题。 内网安全管理系统(保密管…

现在的小年轻真的卷得过分了,真是完全不把自己当人啊

现在的小年轻真的卷得过分了&#xff0c;真是完全不把自己当人啊 都说00后躺平了&#xff0c;但是有一说一&#xff0c;该卷的还是卷。这不&#xff0c;前段时间我们公司来了个00后&#xff0c;工作都没两年&#xff0c;跳槽到我们公司起薪18K&#xff0c;都快接近我了。后来才…

常用电子器件学习——MOS管

MOS管介绍 MOS&#xff0c;是MOSFET的缩写。MOSFET 金属-氧化物半导体场效应晶体管&#xff0c;简称金氧半场效晶体管&#xff08;Metal-Oxide-Semiconductor Field-Effect Transistor, MOSFET&#xff09;。 一般是金属(metal)—氧化物(oxide)—半导体(semiconductor)场效应晶…

RabbitMQ消息应答与发布

消息应答 RabbitMQ一旦向消费者发送了一个消息,便立即将该消息,标记为删除. 消费者完成一个任务可能需要一段时间,如果其中一个消费者处理一个很长的任务并仅仅执行了一半就突然挂掉了,在这种情况下,我们将丢失正在处理的消息,后续给消费者发送的消息也就无法接收到了. 为了…

OpenHarmony驱动消息机制管理

驱动消息机制管理 当用户态应用和内核态驱动需要交互时&#xff0c;可以使用HDF框架的消息机制来实现。 消息机制的功能主要有以下两种&#xff1a; 用户态应用发送消息到驱动。 用户态应用接收驱动主动上报事件。 配置管理 HCS&#xff08;HDF Configuration Source&…

深入分析 Linux 网络丢包问题

热门IT课程【视频教程】-华为/思科/红帽/oraclehttps://xmws-it.blog.csdn.net/article/details/134398330 所谓丢包&#xff0c;是指在网络数据的收发过程中&#xff0c;由于种种原因&#xff0c;数据包还没传输到应用程序中&#xff0c;就被丢弃了。这些被丢弃包的数量&#…

C++进阶:多态(下)

1、多态的原理 多态之所以可以实现&#xff0c;主要是因为虚函数表的存在&#xff0c;虚函数表用于记录虚函数的地址&#xff0c;他是一个函数指针数组&#xff0c;在类中用一个函数指针数组指针来指向数组&#xff0c;子类继承了父类的虚函数表&#xff0c;当有重写的情况发生…

基于SAM的视频标注

在本文中&#xff0c;我们将演示基础模型的应用&#xff0c;例如 Meta 的 Segment Anything 和 YOLOv8&#xff0c;以自动检测、分类和绘制视频中感兴趣对象的蒙版。这是之前指南的后续&#xff1a;使用 Meta 的 Segment Anything 和 YOLOv8 自动分类掩码。在本指南中&#xff…

【RabbitMQ】快速入门及基本使用

一、引言 1、、消息队列 Ⅰ、什么是消息队列&#xff1f; 消息队列是一种进程间通信或同一进程的不同线程间的通信方式&#xff0c;软件的贮列用来处理一系列的输入&#xff0c;通常是来自用户。消息队列提供了异步的通信协议&#xff0c;每一个贮列中的纪录包含详细说明的数据…

PySimpleGUI:让spin支持循环

需求 自己用PySimpleGUI写了个小工具&#xff0c;但是发现它的spin不支持循环。 Tkinter本身的Spinbox有wrap这个开关可以觉得是否支持循环&#xff0c;但是没看到PySimpleGUI也支持这个特性。 代码实现 所谓spin的循环&#xff0c;是指当值变换到最大最小值时&#xff0c;可…