2013-07-19 12 views
5

私はSOの投稿や他のサイトから組み立てたWeb APIコードをいくつか持っています。しかし、タスクのものはまだ私には新しいです。私は新しい場所にアップロードされたファイルをコピーしようとしていますが、ファイルをコピーしようとしているときに例外が発生することがあります。この例外は、ファイルが別のプロセスによって使用されていることを示します。それは毎回起こるわけではありません。コピー操作を別の場所に移動する必要があると思います。ここに私のコードです。助言がありますか?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を使用した直後にファイルを読み書きしようとすると、既知の問題が発生する可能性があります。あなたが取得している例外で何

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

+0

これは、私が扱っている問題かもしれないようです。ありがとう! –