2013-07-19 86 views
5

我有一些Web API代碼,我已經從SO帖子和其他網站彙編。然而,任務對我來說仍然是新的東西。我試圖將上傳的文件複製到新位置,但有時(並非全部)我在嘗試複製文件時遇到異常。異常表示該文件正在被另一個進程使用。不過,它並不是每次都發生。我想我需要將複製操作移到其他地方。這是我的代碼。有什麼建議麼?MultipartFormDataStreamProvider和上傳後立即讀取文件失敗有時

var provider = new MultipartFormDataStreamProvider(uploadroot); 
       var task = Request.Content.ReadAsMultipartAsync(provider).ContinueWith<HttpResponseMessage>(t => 
       { 
        if (t.IsFaulted || t.IsCanceled) 
         throw new HttpResponseException(HttpStatusCode.InternalServerError); 

        var docConversionId = Guid.NewGuid().ToString("N"); 
        var sourceFilePath = Path.Combine(uploadroot, provider.FileData.First().LocalFileName); 
        var destinationFilePath = Path.Combine(inboxroot, docConversionId); 

        File.Copy(sourceFilePath, destinationFilePath); 

        var response = new HttpResponseMessage(HttpStatusCode.OK); 
        response.Content = new StringContent(docConversionId); 
        //response.Content.Headers.Add("DocumentConversionId", docConversionId); 
        return response; 
       }); 
       return task; 
+2

什麼是你所得到的例外?它發生什麼代碼? –

+0

對不起,我在衝。週末度過了一段小小的旅程。我無法複製該文件,因爲該文件正在被另一個進程使用。 –

回答

7

在使用ReadAsMultipartAsync之後,您可能會立即嘗試讀取/刪除文件時遇到已知問題。

以下是有關它的bug(你可以去尋找更多的細節分辨率的信息,爲什麼它的發生,也有解決方法):

https://aspnetwebstack.codeplex.com/workitem/176

+0

這看起來可能是我正在處理的問題。謝謝! –