目录
1.前言
2.发布前的准备
3.打包发布(交叉编译)
3.1更改生成xml文件的设置
3.2进入WebApi项目,右键发布
3.3发布设置------勾选在发布前删除现有文件
4.发送件至服务器
5.服务器安装对应环境
5.1安装IIS
5.2安装Hosting Bundle
6.发布
7.配置端口
8.各类报错
8.1 500.19 Internal Server Error
8.2 500.19 Internal Server Error
8.3找不到页面
8.4找不到页面
8.5显示500.31/32
1.前言
第一次接触确实很迷茫
在朋友、老师与多篇文章帮助下最终还是完成了测试。相当感谢。
发布.net6 WebApi项目到IIS会踩到的坑(500、404) - 简书 (jianshu.com)
这一篇总结了很多错误类型,可以查阅。
aps.net core 6.0 web API & SwaggerUI & IIS部署-CSDN博客
没有服务器的可以选择这篇,直接内网穿透。
.net 6 Core 发布项目 并且部署IIS_专注开发岗位的小白的博客-CSDN博客
这一篇帮忙解决了ASP.NET Core Runtime 6.0.24与让swagger显示出来(这里我也不知道有没有用到,不过我是照着敲得)。
配置过程中可能会有报错,可以翻阅第八部分.
2.发布前的准备
1.服务器(Windows)(后续会出Linux,等等吧)(windows图形化确实方便,但是占用资源太高,而且也没有docker里面运行安全)。
2.可供调试的项目,新建的都可以。
3.打包发布(交叉编译)
3.1更改生成xml文件的设置
首先右键项目点击属性
生成里面勾选生成api文档的文件
这里也是一个坑,不生成运行不起来。
3.2进入WebApi项目,右键发布
3.3发布设置------勾选在发布前删除现有文件
哥们就是在这里踩的大雷,整了半天,之前发布的没有删除,三百多个文件我还很懵逼,最后其实只有33个。文件的多少是根据项目的大小与项目本身的文件的数量决定的。
显示所有设置里面勾选在发布前删除现有文件,第一次发布以前里面应该是空的,如果多次发布还是推荐勾选上。
然后进入发布的文件夹/bin/Release/net6.0/publish
这是一些文件的作用,随便搜了点。。。。
- appsettings.Development.json 和 appsettings.json: 这两个文件用于存储应用程序的配置设置。这些设置可以包括连接字符串、应用程序的行为配置等。
- CQIE.FC.NOS.DataAccess 和其他类似的DLL(动态链接库)文件:这些是包含应用程序的代码的库文件。它们通常包含程序集,这些程序集实现应用程序的不同功能。
- CQIE.FC.NOS.exe: 这是应用程序的可执行文件。它包含程序的入口点,并运行应用程序。
- CQIE.FC.NOS.pdb: 这是程序数据库文件,它包含调试符号,用于在调试应用程序时帮助找到源代码的行信息。
- CQIE.FC.NOS.runtimeconfig.json: 这个文件包含运行时配置选项,例如垃圾回收设置、JIT编译器设置等。
- Microsoft.EntityFrameworkCore.dll 和其他与Entity Framework相关的DLL:这些是与Entity Framework相关的库文件,它是一个对象关系映射(ORM)框架,用于在.NET应用程序中管理数据库操作。
- Microsoft.Extensions.Configuration.Json.dll 和其他与Microsoft.Extensions相关的DLL:这些库文件提供对配置、日志、依赖注入等功能的支持。
- web.config: 这是一个XML文件,用于存储ASP.NET应用程序的配置设置,例如HTTP处理程序映射、安全设置、数据库连接字符串等。
- Newtonsoft.Json.dll: 这是一个流行的JSON库,用于在.NET应用程序中处理JSON数据。
- Swashbuckle.AspNetCore.Swagger.dll, Swashbuckle.AspNetCore.SwaggerGen.dll, Swashbuckle.AspNetCore.SwaggerUI.dll: 这些是与Swashbuckle相关的库文件,它用于在ASP.NET Core应用程序中生成Swagger文档和UI,以便更好地描述和测试API。
- Pomelo.EntityFrameworkCore.MySql.dll: 这是一个用于支持MySQL数据库的Entity Framework Core提供者。
4.发送件至服务器
这部分没什么好讲的,无论你是qq,微信各种可以传递文件的引用都可以。这里比较推荐QQ邮箱,压缩了直接发过去就好了。然后下载解压就好了。
5.服务器安装对应环境
5.1安装IIS
如何安装IIS_刘桂香263的博客-CSDN博客
这个里面是教程
或者看我我上传的一篇pdf,我朋友学校实验的安装步骤,刚写博客不太清楚这东西怎么玩哈。我上传以后不知道跑哪里去了。(我靠,看了下,下载好像要收钱,没必要下了)。
IIS是什么?有什么用?怎么用?-CSDN博客
Internet Information Service
(IIS)是windows开设web网页服务的组件,用来搭载网站运行程序的平台的。还能提供FTP,SMTP等服务。
IIS这边不知是Windows版本问题还是怎么着,IIs有些直接在开始中直接添加,有一些在下图中。
5.2安装Hosting Bundle
下载 .NET 6.0 (Linux、macOS 和 Windows) (microsoft.com)
安装成功会显示
好像就这两个,sdk似乎不太需要。前面的教程有些有,有些没有。如果运行不起在安装也不迟。
6.发布
运用池中将你需要的更改为无托管集成即可
然后网站中添加网站
然后点击右边的浏览
出现这个页面补充好路由即可
7.配置端口
服务器这边找到安全组配置端口
按照格式更改即可,只需更改端口范围,你的IIS里面配置的端口即是。(出入都配置一下吧,我记不住了)
本地中添加公网IP就可以访问了。欧克
8.各类报错
我这边没截图了,用的下面博客的,我也基本上遇到了这些问题,比他遇见的更多
发布.net6 WebApi项目到IIS会踩到的坑(500、404) - 简书 (jianshu.com)
8.1 500.19 Internal Server Error
未安装Hosting Bundle
8.2 500.19 Internal Server Error
权限不足添加一个就好了,踩雷++
8.3找不到页面
当前环境如果为测试环境,则启动Swagger,否则不启动,且.NETCORE WEB API项目默认就是测试环境,所以一旦发布到正式环境后,就不会运行启动Swagger代码。
去掉if (app.Environment.IsDevelopment())即可。
8.4找不到页面
可能是文件不在了,重新按第三部分生成即可。
8.5显示500.31/32
大概率就是导出的文件有问题,看第三部分打包发布即可。
8.6 401.3
同8.2
8.7 403.14
同xml那个问题
9.补充在线静态资源
同样的步骤,资源改为你的图片文件夹即可,添加一个everyone,以及开放端口即可。