因为既然采用前后端分离的方式,就不想把所有功能都写在一个项目里面,对电脑性能的debug都是一种负担,于是采用微服务思想,将后端API按照业务拆分
因为肯定不能的服务会用到相同的代码块,因此搭建私人Nuget包用来封装相同的代码块
1.vs创建一个API项目,用来做账户服务包括登录注册等等
Api层: 提供Api接口
Core层:提供业务逻辑
Data:定义Entity和Dto
Service:数据仓储与数据库交互
2.NuGet服务搭建
创建一个.net framework4.6的空web项目,在Nuget管理选择加入Nuget.server的包
加入之后项目会多出来许多文件,打开web.config,将 <system.web>下重复的注释掉,我是直接删除
接下来,项目右键发布到文件夹,将文件夹vs的文件全部Copy到服务器(桌面远程连接直接直接复制到云服务器)
接下来打开IIS
右键点击网站添加网站,网站名称:就是创建后IIS上显示的名称,物理路径就是刚刚Copy到服务器上的路径(到bin目录即可),端口号:最好10000之后,免得和系统服务冲突,我是10001
接下来和上一章一样,开放防火墙端口,云服务器入站规则端口,开放的端口需要和配置端口号的一样
接下来本机在浏览器上输入弹性ip+端口号(eg:127.0.0.1:11111),讲道理现在会报错
3.报错: 配置错误 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault=”Deny”),或者是通过包含 overrideMode=”Deny” 或旧有的...
解决方案
服务器打开命令提示行:
执行: C:\windows\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers
再执行:C:\windows\system32\inetsrv\appcmd unlock config -section:system.webServer/modules
然后还会报错: 处理程序“ExtensionlessUrlHandler-Integrated-4.0”在其模块列表中有一个错误模。。。。
因为IIS .net Extensibility4.5没安装 ,解决方案
打开控制面板,程序和功能,启动或关闭windows功能
点下一步到服务器角色,一次展开到应用程序开发,勾上.NET Extensibility 4.5,下一步直到安装
完成后再次打开刚刚的ip地址,看到这个页面,安装成功
4.封装数据仓储, 本来想用dapper,结果后面发现sqlsuger比dapper好用
sqlsugger国产,使用方法看官网,文档齐全,还是中文,文档中还包括了存储模式的构建
创建一个.net6 的类库,按官方文档依葫芦画瓢构建完成后,右键项目属性,可以在包选项设置标题和版本
设置完成后,右键项目打包得到nupkg后缀的包文件(路径在Debug或者release文件夹,看打包的时候选择的是啥)
将此文件copy到服务器Nuget项目的Packages下,不同版本需要改项目版本配置,这样copy进去就会分为两个版本
测试
打开程序包管理器设置
名称输入想要的名称,包源写入Nuget的IP+端口
配置完成后,打开Nuget管理器,选择包源,发现刚刚发布的包,成功