我有asp.net Web API,它将最终用户的一些特定文档上载到服务器上的FTP文件位置。 该网站是公开的,将有很多并发用户,因此可以调用许多上载。
我想告诉用户上传成功还是失败。
我正在使用以下代码上传
FtpWebRequest clsRequest = (FtpWebRequest)System.Net.WebRequest.Create(fileName);
clsRequest.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
clsRequest.Method = Ftp.UploadFile;
using (System.IO.Stream clsStream = clsRequest.GetRequestStream())
{
clsStream.Write(bytes, 0, bytes.Length);
clsStream.Close();
clsStream.Dispose();
}
代码正在运行,但恐怕并发用户的性能和稳定性 对于并发用户,以及每个用户的返回成功/失败,从性能,稳定性和服务器运行状况来看,最好的方法是什么
我是否需要使用异步调用,以及如何更改代码?
谢谢
答案 0 :(得分:0)
这是您代码的异步版本:
FtpWebRequest clsRequest = (FtpWebRequest)System.Net.WebRequest.Create(fileName);
clsRequest.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
clsRequest.Method = Ftp.UploadFile;
using (System.IO.Stream clsStream = await clsRequest.GetRequestStreamAsync())
{
await clsStream.WriteAsync(bytes, 0, bytes.Length);
// These lines not required since they are located inside using statement.
//clsStream.Close();
//clsStream.Dispose();
}
请记住,您的方法必须使用async关键字标记,如果它是无效方法,则返回Task。另外,我不得不提到这是一个客户端代码。使其异步不会影响服务器端性能。