c# 简单web api接口实例源码分析

news2024/11/27 0:26:13
CreateHostBuilder(args).Build().Run();

这句语句处于c#webapi程序的第一句,它的作用是:启动接口的三个步骤:

  1. 创建一个HostBuilder对象。
  2. 执行IHostBuilder.Build()方法创建IHost对象。
  3. 执行IHost.Run()方法启动。
    创建和配置Host(主机)的过程就是创建和配置ASP.NET Core应用程序的过程。它包含了应用程序配置、开发环境配置、日志文件配置以及依赖注入。

创建一个HostBuilder接口的对象。

Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder =>
    {
         webBuilder.UseStartup<Startup>();
    });

在这句话后面可以跟很多服务的配置。也可以跟host生命周期事件的挂载。
.ConfigureWebHostDefaults() —配置webapi的信息。

startup.cs类文件
配置服务和应用的请求管道
在这里插入图片描述
该文件包含 startup构造函数,configuration属性,ConfigureServices方法以及Configure方法。
构造函数的作用是注入三种服务。

  • IConfiguration 服务
  • IWebHostEnvironment 服务
  • IHostEnvironment 服务
    这个构造函数的作用就是将在main函数中配置的服务注入到服务器中。

ConfigureServices函数:配置服务到DI容器中。
下面的代码就是在di容器中加入 webapi所使用的mvc架构和注册其中的控制器服务。

        public void ConfigureServices(IServiceCollection services)
        {
            //注册标准的mvc架构
            //services.AddMVC();
            //注册controller相关服务,纯webapi
            services.AddControllers();
        }

Configure方法:用于配置http请求管道,请求中间件。(在ConfigureServices函数之后调用)
下面代码中,app.UseRouting() 和app.UseEndpoints() 必须搭配在一起使用。分别是请求路由中间件,以及将中间件对应到终结点上。

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            //处理异常的
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }


            app.UseStaticFiles();  // 使~/指向wwwroot文件夹


            //使用路由服务  创建路由中间件EndpointRoutingMiddleware
            app.UseRouting();
            //账号认证
            //app.UseAuthorization();
            //给路由中间件设置终结点
            app.UseEndpoints(endpoints =>
            {
                //自定义路由
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });
        }

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

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

相关文章

sklearn中tfidf的计算与手工计算不同详解

sklearn中tfidf的计算与手工计算不同详解 引言&#xff1a;本周数据仓库与数据挖掘课程布置了word2vec的课程作业&#xff0c;要求是手动计算corpus中各个词的tfidf&#xff0c;并用sklearn验证自己计算的结果。但是博主手动计算的结果无论如何也与sklearn中的结果无法对应&…

ChatGLM 6B 部署及微调 【干货】

代码地址、模型地址、安装环境&#xff1a;Ubuntu20.04&#xff0c;RTX3060 12G 一、部署 1.1 下载代码 cd /opt git clone https://github.com/THUDM/ChatGLM2-6B1.2 下载模型 将模型下载后放到项目文件夹内 git lfs install # 确认安装了lfs&#xff0c;或者直接到项目地…

基于ssm的网上订餐系统

一、系统架构 前端&#xff1a;jsp | js | css | jquery 后端&#xff1a;spring | springmvc | mybatis 环境&#xff1a;jdk1.7 | mysql | maven | tomcat 二、代码与数据库 三、功能介绍 01. web端-首页 02. web端-我的餐车 03. web端-我的订单 04. web端-用户中心 05. web…

西门子PLC与组态王无线通讯中如何设置从站

本方案主要详述了在多台西门子300PLC与组态王之间Modbus无线通讯中如何设置从站。方案中所用到的无线通讯终端是DTD434MC——欧美系PLC专用无线通讯终端。 一、方案概述 无线Modbus网络组成如下&#xff1a; 二、测试背景 ● PC端组态软件版本&#xff1a;组态王6.55 ● 默…

tomcat-pass-getshell 弱口令 漏洞复现

tomcat-pass-getshell 弱口令 漏洞复现 名称: tomcat-pass-getshell 弱口令 描述: Tomcat是Apache 软件基金会&#xff08;Apache Software Foundation&#xff09;的Jakarta 项目中的一个核心项目&#xff0c;由Apache、Sun 和其他一些公司及个人共同开发而成。 通过弱口令登…

2024 IEEE Fellow名单公布,上百位华人学者入选!

就在近日&#xff0c;美国电子电气工程师学会&#xff08;Institute of Electrical and Electronic Engineers&#xff0c;IEEE&#xff09;公布了新一届Fellow名单。 IEEE Fellow为学会最高等级会员&#xff0c;是IEEE授予成员的最高荣誉&#xff0c;旨在表彰那些在电气、电子…

内网隧道学习

默认密码&#xff1a;hongrisec2019 一.环境搭建 网卡学习 一个网卡一个分段&#xff0c;想象成一个管道 192.168.52一段 192.168.150一段 仅主机模式保证不予外界连通&#xff0c;保证恶意操作不会跑到真实机之上 52段是内部通信&#xff0c;150段属于服务器&#xff08;…

23款奔驰E300L升级23P驾驶辅助 智驾出行 缓解开车疲劳

辅助驾驶越来越多的被大家所青睐&#xff01;为了提升驾驶安全性和舒适便捷性奔驰改装原厂半自动驾驶23P辅助系统 23P智能辅助驾驶系统还是很有必要的&#xff0c;因为在跑高速的时候可以使用23P智能驾驶的自动保持车速&#xff0c;保持车距&#xff0c;车道自动居中行驶以及自…

小型内衣洗衣机什么牌子好?口碑最好的小型洗衣机

很多人会觉得内衣洗衣机是智商税&#xff0c;洗个内衣只需要两分钟的事情&#xff0c;需要花个几百块钱去入手一个洗衣机吗&#xff1f;然而清洗贴身衣物的并不是一件简单的事情&#xff0c;如果只是简单的搓洗&#xff0c;内裤上看不见的细菌也无法消除&#xff0c;而且对来生…

英特尔工作站:助力专业用户实现高效创作

原创 | 文 BFT机器人 英特尔工作站是由全球知名的英特尔公司设计和开发的一款计算平台。英特尔在工作站处理器领域将其产品分为性能型和移动型两类&#xff0c;它的诞生旨在满足专业用户在科学、工程、设计等领域对高性能计算的需求。英特尔工作站配备了最新的英特尔处理器、大…

关于卸载亚信安全防火墙软件

电脑根据需求上安装亚信安全防火墙,不需要时,要卸载需要密码 关于卸载亚信安全防火墙客户端-适用于win10和win11的方法(系统64位). 亲测有效: 1.电脑上winR,运行输入msconfig 2.勾选引导中的安全引导,然后重新启动,进入安全模式. 3.winR输入regedit,打开注册表编辑器进入/Mis…

苹果用户如何恢复手机数据?盘点3个实用方法!

随着手机功能的不断增强和应用程序的不断丰富&#xff0c;人们越来越依赖手机&#xff0c;离不开手机。然而&#xff0c;有时因为误操作、系统故障或者数据丢失等原因&#xff0c;我们需要找回手机上丢失的数据。那么&#xff0c;苹果用户如何恢复手机数据呢&#xff1f;本文将…

java开发必备的Vue知识点和技能

vue介绍 什么是Vue&#xff1f;vue就是一款用于构建用户界面的渐进式的JavaScript框架。&#xff08;官方&#xff1a;https://cn.vuejs.org/&#xff09; 框架&#xff1a;就是一套完整的项目解决方案&#xff0c;用于快速构建项目。 优点&#xff1a;大大提升前端项目的开…

Java基础之集合类

Java基础之集合类 一、集合的框架1.1、集合概述1.2、集合与数组区别1.3、数组的缺点&#xff1a;1.4、常用集合分类1.5、Collection常用方法 二、List集合2.1、ArrayList2.2、LinkedList2.3、Vector2.4、区别 三、Set集合3.1、HashSet集合3.2、LinkedHashSet集合3.3、TreeSet集…

终于等到你!常用的组织架构图模板,高清图片一键导出

组织架构图是一种用来展示一个组织内部人员和职责关系的图表。通过组织架构图&#xff0c;我们可以清晰地了解一个组织的层级架构和各个部门之间的关系。在本文中&#xff0c;我们将向大家推荐8个常用的组织架构图模板&#xff0c;帮助你快速制作出专业的组织架构图。 1. 市场营…

数据结构——动态规划

动态规划&#xff1a;有很多重叠子问题&#xff0c;每一个状态一定是由上一个状态推导出来的 贪心&#xff1a;没有状态推导&#xff0c;而是从局部直接选最优的 动规五步曲&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 确定递推公式&#xff08;容…

招投标信息可以用CRM系统来查看吗?

对于B2B企业来说获客难、获客成本高是共识。做大客户的企业通过招投标获取商机是一个重要获客途径&#xff0c;然而传统方式管理招投标信息问题很多&#xff0c;例如资料丢失、手工录入出错、信息分散、信息查找费时费力。为了解决这些难题小编推荐CRM系统&#xff0c;CRM系统需…

非参数估计与参数估计的区别,以及详细列举了常用的非参数估计方法和参数估计方法,一网打尽非参数估计与参数估计!!!

文章目录 前言一、非参数估计与参数估计的区别二、常用的非参数估计方法三、常用的参数估计方法总结 前言 非参数估计和参数估计是统计学中的两种不同的估计方法。 一、非参数估计与参数估计的区别 参数估计是指&#xff0c;对于已知分布形式的数据&#xff0c;根据样本数据…

WinEdt打开.tex文件显示error reading错误

原因&#xff1a; 是因为.tex文件中包含了utf-8字符&#xff0c;而在打开的时候并没有指明utf-8打开方式 解决方法 在WinEdt中&#xff0c;【File】-【Open】&#xff08;或使用快捷键CtrlO&#xff09;&#xff0c;在弹出的打开对话框中&#xff0c;右下角【文件名】右侧有…

全面探讨HTTP协议从0.9到3.0版本的发展和特点

前言&#xff1a; 最近的几场面试都问到了http的相关知识点&#xff0c;博主在此结合书籍和网上资料做下总结。本篇文章讲收录到秋招专题&#xff0c;该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读。 如果文章有什么需要改进的地方欢迎大佬提出&#xff0c;对大佬有帮…