.NET WebApi 发布到服务器(windows)并开放端口

服务器 0

目录

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

这是一些文件的作用,随便搜了点。。。。

  1. appsettings.Development.json 和 appsettings.json: 这两个文件用于存储应用程序的配置设置。这些设置可以包括连接字符串、应用程序的行为配置等。
  2. CQIE.FC.NOS.DataAccess 和其他类似的DLL(动态链接库)文件:这些是包含应用程序的代码的库文件。它们通常包含程序集,这些程序集实现应用程序的不同功能。
  3. CQIE.FC.NOS.exe: 这是应用程序的可执行文件。它包含程序的入口点,并运行应用程序。
  4. CQIE.FC.NOS.pdb: 这是程序数据库文件,它包含调试符号,用于在调试应用程序时帮助找到源代码的行信息。
  5. CQIE.FC.NOS.runtimeconfig.json: 这个文件包含运行时配置选项,例如垃圾回收设置、JIT编译器设置等。
  6. Microsoft.EntityFrameworkCore.dll 和其他与Entity Framework相关的DLL:这些是与Entity Framework相关的库文件,它是一个对象关系映射(ORM)框架,用于在.NET应用程序中管理数据库操作。
  7. Microsoft.Extensions.Configuration.Json.dll 和其他与Microsoft.Extensions相关的DLL:这些库文件提供对配置、日志、依赖注入等功能的支持。
  8. web.config: 这是一个XML文件,用于存储ASP.NET应用程序的配置设置,例如HTTP处理程序映射、安全设置、数据库连接字符串等。
  9. Newtonsoft.Json.dll: 这是一个流行的JSON库,用于在.NET应用程序中处理JSON数据。
  10. Swashbuckle.AspNetCore.Swagger.dllSwashbuckle.AspNetCore.SwaggerGen.dllSwashbuckle.AspNetCore.SwaggerUI.dll: 这些是与Swashbuckle相关的库文件,它用于在ASP.NET Core应用程序中生成Swagger文档和UI,以便更好地描述和测试API。
  11. 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,以及开放端口即可。

也许您对下面的内容还感兴趣: