C# FtpWebRequest连接组名称练习问题
我有一个关于C# FtpWebRequest连接组名称练习问题,c#,ftpwebrequest,C#,Ftpwebrequest,我有一个关于请求的问题。ConnectionGroupName。 我知道我应该对相同的主机URL使用相同的GroupnName,因为MaxServicePointIdleTime是100秒,其中包含该GroupName的所有请求都会被回收 我现在想知道的是,对于同一主机,为不同的请求使用不同的组名是好是坏,如果我在下面说明我的意思: request.Method=WebRequestMethods.Ftp.UploadFile;request.ConnectionGroupName=“Group
请求的问题。ConnectionGroupName
。
我知道我应该对相同的主机URL使用相同的GroupnName,因为MaxServicePointIdleTime
是100秒,其中包含该GroupName的所有请求都会被回收
我现在想知道的是,对于同一主机,为不同的请求使用不同的组名是好是坏,如果我在下面说明我的意思:
request.Method=WebRequestMethods.Ftp.UploadFile;request.ConnectionGroupName=“Group1”;
request.Method=WebRequestMethods.Ftp.DownloadFile;request.ConnectionGroupName=“Group2”;
request.Method=WebRequestMethods.Ftp.DeleteFile;request.ConnectionGroupName=“Group3”;
完整的代码示例:Ftp.UploadFile强>
void uploadimage()
{
字符串sourceimage=“C:/ESD/image_2.jpg”;
Task Task=FtpUploadFile(sourceimage);
如果(task.IsFaulted==false)
{
Show(task.Result.ToString());
}
}
私有任务closeRequestStreamAsync(Stream requestStream){return Task.Run(()=>{requestStream.Close();});}
公共异步任务FtpUploadFile(字符串文件名)
{
//如果发生异常,我们希望能够关闭这些
FtpWebResponse响应=null;
FtpWebRequest请求=null;
FileStream sourceStream=null;
Stream requestStream=null;
尝试
{
bool isimage=false;String ext=Path.GetExtension(文件名);
如果(ext==“.jpg”| ext==”.jpeg”| ext==“.png”| ext==”.gif”| ext==“.bmp”){.isimage=true;}
请求=(FtpWebRequest)WebRequest.Create(“ftp://someurl.com/Folder1/test1.jpg");
request.usesponsive=true;
如果(isimage==true){request.UseBinary=true;}//for image
如果(isimage==false){request.UseBinary=false;}//for text
request.KeepAlive=true;//保持连接打开
request.Method=WebRequestMethods.Ftp.UploadFile;
request.ConnectionGroupName=“Group1”;
request.ServicePoint.ConnectionLimit=4;
//这些是证件。
request.Credentials=新的网络凭据(“用户名”、“密码”);
sourceStream=File.OpenRead(文件名);
byte[]buffer=新字节[sourceStream.Length];
等待sourceStream.ReadAsync(buffer,0,buffer.Length);
sourceStream.Close();
requestStream=等待请求。GetRequestStreamAsync();
wait requestStream.WriteAsync(buffer,0,buffer.Length);
//这是一个需要时间的电话
等待closeRequestStreamAsync(requestStream);
//response=(FtpWebResponse)request.GetResponse();
WebResponse responseWeb=等待请求。GetResponseAsync();
响应=(FtpWebResponse)响应Web;
if(response.StatusDescription.Contains(“226”))
{
//这意味着我们已成功上传该文件!
}
response.Close();
返回true;
}
捕获(例外情况除外)
{
string errMSG=string.Format(“上载文件失败,异常:{0}”,ex.Message);
返回false;
}
}
我确实在:https://docs.microsoft.com/en-us/dotnet/api/system.net.ftpwebrequest.connectiongroupname?view=netframework-4.8
“使用连接组可以提高性能,因为这允许用户的所有请求重新使用通过用户凭据验证的连接。”上述内容是否意味着可以对相同的组名使用:Ftp.UploadFile、Ftp.DownloadFile、Ftp.DeleteFile
或者我应该为方法使用不同的组名吗?(主机和凭据相同)