net core 部署到centos小结

这个主要记录一些遇到的问题,不记录部署过程;

1、dotnet 工作目录的问题;

部署好net core和项目文件后,直接dotnet xxx.dll就可以直接运行net core程序,但是注意这里的路径,命令行在什么目录位置,那么dotnet的工作目录就在什么位置,那么这个工作目录有什么影响呢;

1.1、你的项目文件有很多配置文件,比如appconfig.json,如果工作目录不是你的项目文件目录,就没办法读取到这些配置文件了,所以我在配置文件里配置了url,一直都不生效,dotnet一直监听127.0.0.1,导致外网、局域网地址都没法访问,我一开始没有注意看info,一直以为是centos的问题,来回折腾了好久,才发现没监听对,

PS:ss -lns 看到监听列表里有一个类似[::1],我一直以为是全地址监听,后来群友说这个是ipv6地址,类似127.0.0.1,原来是我理解错了;

1.2、影响代码中的路径获取,如

Directory.GetCurrentDirectory()

这里获取的就是工作目录的地址,如果你的工作目录不是在项目目录下,那获取的路径就会有问题了,我一开始以为是net core的版本不一样,导致代码处理不一致,因为我原来的已经上线的系统是net core2的,一直正常运行(PS:其实是因为正确设置了工作目录),后来我都想直接改代码了,把路径写S在代码里,经过群里的大神指点才发现是这个工作目录的问题;


那这个要怎么解决呢,其实很简单,就是直接cd到你的项目目录中然后再dotnet xxx.dll,而不要使用dotnet /xxx/xxx/xxx.dll


2、当你的配置文件没有配置url时,可以通过dotnet的命令行参数,指定相关参数,比如dotnet xxx.dll --urls http://0.0.0.0:5000;还有其他参数可以指定比如环境等,