1.创建webapi工程
选择asp.net core web
修改相关的设置
选择API这个类别,如果https这个选项勾上之后,程序会自动见http协议转换成https协议
2.基础描述:
程序的入口是main,主要是创建IHost对象和加载初始的设置。从这里也能看出整个程序实际就是一个命令行程序,这也是.net core 能跨平台使用的基石。
mian函数加载startup类
configureservices中用于加载相关的类,用于程序其他地方的依赖注入。(下面的代码就是在加载所有的controller类、数据库的连接上下文、相关的接口和对应的实现类。最后一个是用于解决跨遇问题的)
configure中用于加载相关中间件。需要注意的是app.UseRouting()的先后位置,这个中间件是用于路由的控制的。useCors对应的上面的addCors
controllers文件夹里面有一个默认的controller类
[ApiController]表示这个类为controller类被路由控制,[Route("[contorller]")]表示这个类的路由为“/weatherforecast”(去掉类名里面的controller,然后所有的字母都小写)。
带参数的构造行数将对象logger注入
[HttpGet] 表示被注解的方法被get方法请求,如果有多个get注释,则由路由根据路径判断访问具体的哪个函数,和函数名没有关系。
比如[HttpGet][Route("get")]这两个同时使用则表示路径为“/weatherforecast/get”。这两个注解也能合并成[HttpGet("get")]。
[HttpGet("{id}")]表示带参数的路由,参数名称为id。参数名称要和函数中的参数名称对应。
如果是post请求,则必须在前端请求的地方将对象作为参数传入。(下图是自己写的blazor webassambly项目中的一段代码)
后端在对应函数上面写上对象参数。(可以看到路由的departmentId就是第一个参数。上图中的红色框中的位置则为第二个参数。)
3.Dto部分,这块使用的是ef core,读者可以自行百度。
4.运行:本人在编码时不喜欢使用iis,所以在这个文件里面将iis的配置删除了(删除之后下图中启动的地方就不会再有iis的选项),这样在开发环境运行时会将程序部署到自带的服务器上面。这个applicationurl代表服务的地址;launchbrowser代表在开发环境下面运行时是否自动打开浏览器并访问默认路由;这个launchurl代表默认的路由地址。后面的环境变量和项目中的属性中对应,也可自定义。
5.发布:有多种发布模式,个人因为需求简单所以只是用了fdd模式,还有多种另外的两种模式,读者可自行百度。
发布完成之后,会在上图的目标位置新建一个publishabc这个文件夹。
6.部署:有两种部署方式,命令行部署(使用自托管Web服务器(Kestrel))和iis部署
a.命令行部署:打开上图中的文件路径,打开ps
输入dotnet --info 看看.net core环境是否安装完整。
输入dotnet WebApplication1.dll --urls http://*:7001 部署。这个语句表示部署webapplication1这个程序到http://*:7001本机的7001端口上
部署成功之后,就可以使用localhost和ip访问了。
b.iis部署:
iis功能如何打开,读者可以自行百度。
添加应用程序池(据说.net core 3+可以不在设置这个应用程序池,但是本人没有测试。)
在应用程序池上面点击右键,点击添加,注意修改相关配置。
在刚才建立的程序池上面点击右键选择高级设置,修改下图中的标识,
右键点击网站选择新建
选择上一步新建的程序池
选择ip和端口,一般ip地址都是本机ip地址,端口自行设置,只要不重复就行。设置完成之后点击确认。
如果.net core程序连接的是sqlserver数据库,则需要在sqlserver里面修改相关设置,其他的数据库,读者自行百度。
在用户上面点击右键,选择新建用户。。。。。。
新建完成之后,重启数据库,重启iis。
在前台访问刚才发布的服务http://localhost:7001/weatherforecast
7.总结:
a.这里千万要和前面运行环境里面的地址端口区分开,launchSettings.json中设置的都是开发时的配置,真正部署的ip和端口,是根据上面部署时的设置来的。
b.特殊错误,根据我自己的经验,win10好像是不自带dotnet-host的,在访问的时候,会提示500,需要下载安装,这个可以自行百度。
我本地自己测试的时候下载安装的版本是