.net core框架

news/2024/5/19 21:48:46 标签: .netcore, c#

ASP.NET Core 入门

跨平台开源框架 B/S

类与方法

Console 部分称为“类”。 类“拥有”方法;或者可以说方法存在于类中。

WriteLine() 部分称为“方法”。

想要使用方法就要知道方法在哪里

——————————

执行流

一次执行一段

ASP.NET Core 是什么东西?.net框架吗?

企业里面-把后端完善

1.配置Swagger

1.为生成的api追加注释

Program.cs

builder.Services.AddSwaggerGen(option =>
{
    //xml文档绝对路经--读取根据控制器api生成的Xml的文件  ?????
    var file = Path.Combine(AppContext.BaseDirectory,
        "BookReadWebApi.xml");

    //true显示器层展示注释
    option.IncludeXmlComments(file, true);

    //action排序
    option.OrderActionsBy(o => o.RelativePath);
});

配置让swagger展示注释

2.不同版本api的版本控制

0.创建版本枚举文件夹

1.获取api的名称
builder.Services.AddSwaggerGen(option =>
{
    typeof(ApiVersions).GetEnumNames().ToList().ForEach(Version =>
    {
        //1.先获取所有name
      option.SwaggerDoc(Version,new Microsoft.OpenApi.Models.OpenApiInfo() 
      {
        Title = $"读书平台",
        Version = Version,
        Description = $"通用版本的CoreApi版本{Version}"
      });
    });
    ......
    }
2.遍历api

app.UseSwaggerUI(c =>
{
    foreach(string version in typeof(ApiVersions).GetEnumNames())
    {
        c.SwaggerEndpoint($"/swagger/{version}/swagger.json",$"阅读平台第{version} 版本");
    }
});
3.控制当前api只在特定(V1)的版本中展示改接口
[ApiExplorerSettings(IgnoreApi =false,GroupName =nameof(Utility.SwaggerExt.ApiVersions.V1))]

静态类里面的静态方法的this成为扩展方法

可以将里面的方法调用改写

CustomSwaggerExt.AddSwaggerExt(builder.Services);等效于
builder.Services.AddSwaggerExt();

这就是中间件的封装?????不懂,不管

2.连接数据库??

还没学

3.中间件

将文件定义到该代理下面

app.Use(async (context, next) =>
{
    await next.Invoke();
});

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

启用静态文件中间件:

一,可以通过打开浏览器查看该静态文件里的内容

1.根目录下新建文件夹wwwroot->将图片文件存储到该地址下

2.Program.cs配置如下内容

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

二,指定目录:MyRouse文件夹作为指定目录,RequestPath设置请求前缀

app.UseStaticFiles(new StaticFileOptions()
{
    FileProvider=new PhysicalFileProvider(Path.Combine(builder.Environment.ContentRootPath,"MyRouse")),
        RequestPath="/StaticFiles"//https://localhost:7035/StaticFiles/2.png(选择性添加)
});

三,目录浏览-中间件

在Program.cs配置如下内容

var fileProvider = new PhysicalFileProvider(
        Path.Combine(builder.Environment.ContentRootPath, "MyRouse"));
var requestPath = "/MyRouse";
....
app.UseStaticFiles(new StaticFileOptions()
{
    FileProvider=new PhysicalFileProvider(
        Path.Combine(builder.Environment.ContentRootPath,"MyRouse")),
    RequestPath= requestPath
});

app.UseDirectoryBrowser(new DirectoryBrowserOptions
{
    FileProvider=fileProvider,
    RequestPath= requestPath

});

https重定向

现在都是默认点击就送

1.启动两个默认地址,默认启动swagger文件,

 "https": {
   "commandName": "Project",
   "dotnetRunMessages": true,
   "launchBrowser": true,
   "launchUrl": "swagger",
   "applicationUrl": "https://localhost:7035;http://localhost:5043",
   "environmentVariables": {
     "ASPNETCORE_ENVIRONMENT": "Development"
   }

但http地址是不安全的所以我们现在重定向

2.在Program.cs配置如下内容

app.UseHsts();
app.UseHttpsRedirection();

Hsts是一种安全机制,在未来一段时间只使用https来访问网站

读取配置

ASP.NET Core 项目默认配置文件:appsettings.json文件

 //appsettings.json
 "msg": "yeye"
//Program.cs
app.MapGet("config", (IConfiguration configuration) =>
{
    return configuration["msg"] + '_' + configuration["Logging:LogLevel:befault"];
});

省略

开发环境

控制swagger仅仅在开发环境中展示,发布之后将不再展示

在Program.cs配置如下内容

if (app.Environment.IsDevelopment())
{
    app.UseHsts();
    app.UseSwagger();
    app.UseSwaggerUI();
}
..
    app.Run();

4.more

日志

开发可以使用

app.Logger.LogInformation("程序已启动");//本地自带的

生产环境一般使用第三方的库作为日志:

可以生成txt文件,可以将日志添加到数据库里面,方便排查问题

需要注意的点:保存文件的名称及存储地址

//CfgFile/log4net.Config
<?xml version="1.0" encoding="utf-8"?>
<log4net>
	<!-- 控制台日志配置 -->
	<appender name="Console" type="log4net.Appender.ConsoleAppender">
		<!-- 日志输出格式 -->
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
		</layout>
	</appender>

	<!-- 文件存储日志配置 -->
	<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
		<!-- 保存文件的名称及存储地址 -->
		<file value="log4\log.log" />
		<!-- 追加内容覆盖 -->
		<appendToFile value="true" />
		<!-- 文件的编码方式 -->
		<param name="Encoding" value="UTF-8"/>
		<!-- 每个文件的大小 -->
		<maximumFileSize value="100KB" />
		<!-- 保存文件数量 -->
		<maxSizeRollBackups value="2" />
		<!-- 日志输出格式 -->
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="%level %thread %logger - %message%newline" />
		</layout>
	</appender>

	<root>
		<level value="ALL" />
		<appender-ref ref="Console" />
		<appender-ref ref="RollingFile" />
	</root>
</log4net>

0了,会生成log.log的日志文件

IIS安装

1.控制面板

2.选择程序

3.

4.

发布项目

默认路经

IIS运行

下载安装:dotnet-hosting-7.0.14-win.exe(官网下载选择Hosting Bundle进行下载安装即可)

IIS部署


http://www.niftyadmin.cn/n/5423819.html

相关文章

学习vue3第四节(ref以及ref相关api)

主要记录以下api&#xff1a;ref()、isRef()、unref()、 shallowRef()、triggerRef()、customRef() 1、ref() 定义 接受一个内部值&#xff0c;返回一个响应式的、可更改的 ref 对象&#xff0c;此对象只有一个指向其内部值的属性 .value&#xff0c;.value属性用于追踪并且存…

Effective C++ 学习笔记 条款26 尽可能延后变量定义式的出现时间

只要你定义了一个变量而其类型带有一个构造函数或析构函数&#xff0c;那么当程序的控制流&#xff08;control flow&#xff09;到达这个变量定义式时&#xff0c;你便得承受构造成本&#xff1b;当这个变量离开其作用域时&#xff0c;你便得承受析构成本。即使这个变量最终并…

Bitmap实现原理应用场景

Bitmap是什么&#xff1f; 用内存中连续的二进制位&#xff08;bit&#xff09;&#xff0c;用0或1标识数据是否存在。 长度为10的bitmap&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;4 在bitmap中存在。 Bitmap实现 1、字符串 数值对应字符串的下标、二进制位0&…

全景解析 Partisia Blockchain:以用户为中心的全新数字经济网络

在区块链世界中&#xff0c;以比特币、以太坊网络为代表的主流区块链奠定了该领域早期的基础&#xff0c;并让去中心化、点对点、公开透明以及不可逆成为了该领域固有的意识形态。事实上&#xff0c;过于透明正在成为区块链规模性采用的一大障碍&#xff0c;我们看到 90% 以上的…

Python算法题集_搜索旋转排序数组

Python算法题集_搜索旋转排序数组 题33&#xff1a;搜索旋转排序数组1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【二分法区间判断】2) 改进版一【二分找分界标准二分法】3) 改进版二【递归实现二分法】 4. 最优算法5. 相关资源 本文为Pytho…

前端页面访问后台hiveserver2,阶段性报错

1、运行环境 Windows11下安装VMware&#xff0c;VMware下安装CentOS7 Linux系统&#xff0c;三台虚拟机集群部署hadoop&#xff0c;安装hive&#xff1b; 在Linux下安装Eclipse&#xff0c;创建maven工程&#xff0c;使用hive-jdbc-2.3.2访问hiveserver2 2、在windows11下&…

【Vue3】什么是路由?Vue中的路由基本切换~

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:QRCode)

用于显示单个二维码的组件。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 二维码组件的像素点数量与内容有关&#xff0c;当组件尺寸过小时&#xff0c;可能出现无法展示内容的情况&#xff0c;…