我使用nginx
在# Location source code
/home/user-0123456/webapp
服务器上部署了.NET Core Web应用程序。
我想找到这个目录:
// Location compiled code and source to outside world
/var/webapp
从此位置:
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
Environment.GetFolderPath(System.Environment.SpecialFolder.Personal)
在这种情况下,用户-0123456是固定的,但修复应该是通用的。因此,未来可能会有所不同 - 但您可以假设总会有一个用户。
我确实遇到了this帖子,但这两行都是:
/var/www
返回/home/user-0123456/webapp
而不是filter
。
那么如何从另一条路径中找到主文件夹中'webapp'-dir的根目录?
答案 0 :(得分:1)
简单,您可以使用以下命令获取HOME目录:
System.Environment.GetEnvironmentVariable("HOME");
但是,如果您的应用程序在www-data帐户下运行,则“home”将是用户www-data的主目录,而不是您当前登录的用户...
如果你想获得网络应用程序的根目录,那就是
System.IO.Path.GetDirectoryName(typeof(Program).Assembly.Location);
但是如果你想将/ var / xyz中的目录映射到/ home / user-123 / xyz,那么你可以这样做:
string user = System.Environment.GetEnvironmentVariable("USER");
string app = System.IO.Path.GetDirectoryName(typeof(Program).Assembly.Location);
app = app.Substring("/var/".Length);
string sourceDir = System.IO.Path.Combine("/home", user, app);
如果您确实需要其他用户的主目录,则按照用户名获取该目录:
string username = "user-123";
Mono.Unix.Native.Passwd pwd = Mono.Unix.Native.Syscall.getpwnam(username);
// pwd.pw_uid
string dir = pwd.pw_dir;
System.Console.WriteLine((dir));
最后一个需要为.NET-Core / NetStandard2.0编译的Mono.Posix以及mono.posix包装其Linux系统调用的本机库。