Mam trochę kodu Web API, który zebrałem z wpisów SO i innych stron. Jednak rzeczy z Task są dla mnie wciąż nowe. Próbuję skopiować przesłany plik do nowej lokalizacji, ale czasami (nie cały czas) otrzymuję wyjątek podczas próby skopiowania pliku. Wyjątek wskazuje, że plik jest używany przez inny proces. Nie zdarza się to jednak za każdym razem. Myślę, że muszę przenieść operację kopiowania gdzie indziej. Oto mój kod. Jakieś sugestie?MultipartFormDataStreamProvider i czytanie pliku natychmiast po jego przesłaniu kończy się niepowodzeniem.
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;
Co jest wyjątkiem, że są coraz ? W jakim wierszu kodu występuje? –
Przepraszam, śpieszyłem się. Zajęła małą wycieczkę przez weekend. Nie mogę skopiować pliku, ponieważ plik jest używany przez inny proces. –