C#项目原来部署在Windows环境上,上传的文件都能到指定的文件夹里去,但是把项目部署到Linux系统中去之后,原本指定的文件去上传到项目的根目录中去了,没有到指定的文件夹去,这个怎么解决呢?
比如,后台代码是这样写的:var filepath = $@"{Environment.CurrentDirectory}/Resource/System/{fileGuid}/".Replace("\", "/");
var upPath=filepath +"xxxxx.jpg";
在本地测试都能把xxxx.jpg文件上传到项目中的Resource/System/{fileGuid}/这个文件夹里面,但是部署到Linux系统中之后,再上传文件就跑到项目的根目录中去了,这个怎么破?
依赖注入 IHostingEnvironment env
,然后试试下面的路径
var filepath = $@"{env.ContentRootPath}/{web文件夹名称}/Resource/System/{fileGuid}/";
此方法有效!
假设我要把文件放在 /usr/local/nginx/html/doc 目录下 但是我的站点没在这个目录
那么怎么写呢@dudu
Environment.CurrentDirectory
获取的是执行 dotnet
命令时所在的目录, 如果有使用守护进程,一定要将工作路径设置为程序文件所在的目录。
这个怎么操作呢?给个例子看看呗?
@gyangjing: 使用的是surpervisor
的话,就是只要指定directory = xxx
就好了。
[program:demo]
command=/usr/bin/dotnet xxx.dll ; 你的程序dll
directory=/xxx/xxxx/publish ; 指定的程序所在工作目录
.....
@hellotim: 看来你是Linux高手
请使用Path.Combie
.net core 用这个也可以么?没试过呢?