.NET Code WebApi CentOS部署

 

准备

Visual Studio Code

CentOS 7

FTP

创建webapi项目

>dotnet new webapi

项目简单模拟通过POST调用接口,读取配置文件发送消息,返回发送结果

创建这几个文件:

ServerConfig.cs//用于读取配置文件

Modes>Message.cs//模拟发消息的实体类

Controllers>MessageControllers.cs//控制器

ServerConfig.cs

 

Modes>Message.cs

Controllers>MessageControllers.cs//控制器

这里顺便提一下web api的知识,有人经常遇到[FromBody]Message message,接收到实体的时候得到的是null,也没有抛异常,这个问题通常是传参的时候,有字段没法反序列化的原因,比如一个int类型的属性ID,传参的时候比如是“123456789”。

代码完成我们来测试一下:

可以看到,运行正常,为了在外网能够访问,我们修改一下默认端口比如5354

 

测试的代码就绪,那么开始发布。

 

webapi> dotnet publish -c Release

这些就是我们将要发布的文件。

登录Linux

执行命令,可以登录微软官网查看。

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

sudo yum update
sudo yum install dotnet-sdk-2.1

 执行完成后,新建目录比如: 

/var/wwwroot/dotnet/

通过FTP把刚才发布的文件上传到该目录下

可以看到可以正常运行了。

 

 正常运行,但是过程并没有这么顺利,因为sdk版本不一致,项目的是2.1.500,所以安装一下2.1.200.

执行这个命令的时候

sudo yum install dotnet-sdk-2.1
安装的版本是2.1.500。

安装一下版本:

安装完后,再运行

删除以下目录。

 

现在再运行即可正常。

控制台退出后,那么进程也结束了,把它做成服务。

配置文件webapi.service

[Unit]
Description=Example .NET Web API App running on Ubuntu

[Service]
#涉及到磁盘写操作,改行必须配置 WorkingDirectory=/var/wwwroot/dotnet
#注意这行,/usr/bin/dotnet必须加上 ExecStart=/usr/bin/dotnet /var/wwwroot/dotnet/webapi.dll Restart=always RestartSec=10 KillSignal=SIGINT User=root Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install] WantedBy=multi-user.target

 

至此完成。
posted @ 2018-11-28 19:38  牧羊人-hunter  阅读(1152)  评论(0编辑  收藏  举报