【问题标题】:Dispose Object Of RestRequest RestSharp?处理 RestRequest RestSharp 的对象?
【发布时间】:2015-07-28 15:14:31
【问题描述】:

我正在使用 RestSharp 并创建 RestRequest 对象以将 FileData 发送到 API。但是在得到响应后,我想从本地计算机中删除文件,但是当我尝试执行相同操作时,它给了我错误“文件正在被其他进程使用”。我认为的原因是我无法处理 RestRequest 的对象。请帮我解决它。下面是代码。提前谢谢..!!!

   public string PostMultiformDataAPI(Method method, string apiUrl, string data = "", Dictionary<string, string> headers = null)
        {
            string[] files = null;
            try
            {
                RestClient client = new RestClient(apiUrl);
                var request = new RestRequest();
                request.Method = method;

                //Add header values to request
                if (headers != null)
                {
                    foreach (var header in headers)
                    {
                        request.AddHeader(header.Key, header.Value);
                    }
                }

                string filename = string.Empty;

                if (Directory.Exists(HttpContext.Current.Server.MapPath("/Upload")))
                {
                    files = Directory.GetFiles(HttpContext.Current.Server.MapPath("/Upload"));

                    foreach (string file in files)
                    {
                        request.AddFile(file.Split('/').Last(), file);
                    }
                }

                // execute the request
                IRestResponse response = client.Execute(request);
                var content = response.Content; // raw content as string

                foreach (string file in files)
                {
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                    var fileInfo = new FileInfo(file);
                    fileInfo.Refresh();
                    fileInfo.Delete();

                    //File.Delete(file);
                }

                return content;

            }
            finally
            {

            }
        }

【问题讨论】:

    标签: c# file file-upload webrequest restsharp


    【解决方案1】:

    您只需将 null 分配给请求对象实例即可删除它必须归档的引用。为我工作。请让我知道它是否适合您。

                // execute the request
                IRestResponse response = client.Execute(request);
                var content = response.Content; // raw content as string
    
                request = null;
                response = null;
    
                foreach (string file in files)
                {
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                    var fileInfo = new FileInfo(file);
                    fileInfo.Refresh();
                    fileInfo.Delete();
                    File.Delete(file);
                }
    
                return content;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      相关资源
      最近更新 更多