跳到主要内容
版本:2.0

远程文件系统

一、说明

使用该插件,可以访问远程终端的文件系统。包括:创建、删除、复制、移动、获取信息等。

二、使用

该功能由RemoteAccessFeature功能插件提供。所以需要客户端服务器都需要UseRemoteAccess

.ConfigurePlugins(a =>
{
a.UseRemoteAccess();
});

以获取文件夹信息为例:

【请求端】

任意Dmtp终端均可以调用GetRemoteAccessActor创建一个访问器。

同时可以传递一个元数据组。用于载入自定义消息。

var result = await this.m_client.GetRemoteAccessActor().GetDirectoryInfoAsync("c:/新建文件夹", millisecondsTimeout: 30 * 1000);

//然后通过DirectoryInfo属性,可以获取到请求文件夹的信息,包括创建时间、修改时间、子文件夹、子文件等。
提示

此处可以访问远程终端的文件系统。包括:创建、删除、复制、移动、获取信息等

【响应端】

响应端定义一个插件,实现IDmtpRemoteAccessingPlugin,然后实现接口。

public class MyRemoteAccessPlugin : PluginBase, IDmtpRemoteAccessingPlugin
{
public async Task OnRemoteAccessing(IDmtpActorObject client, RemoteAccessingEventArgs e)
{
//Console.WriteLine($"有客户端正在请求远程操作");
//Console.WriteLine($"类型:{e.AccessType},模式:{e.AccessMode}");
//Console.WriteLine($"请求路径:{e.Path}");
//Console.WriteLine($"目标路径:{e.TargetPath}");

//Console.WriteLine("请输入y/n决定是否允许其操作?");

//var input = Console.ReadLine();
//if (input == "y")
//{
// e.IsPermitOperation = true;
// return;
//}

//如果当前插件无法处理,转至下一个插件
await e.InvokeNext();
}
}
警告

远程文件系统访问,是属于比较隐私的功能,所以在开发这功能时,应该取得被访问端的访问许可,所以在每次访问时,都必须对e.IsPermitOperation = true做确认动作。

本文示例Demo