public ImportBlogPostsResponse Execute(ImportBlogPostsViewModel request) { var fileUri = importService.ConstructFilePath(request.FileId); DownloadResponse downloadResponse; try { downloadResponse = storageService.DownloadObject(fileUri); } catch (Exception exc) { throw new ValidationException(() => BlogGlobalization.ImportBlogPosts_FailedToRetrieveFileFileStorage_Message, "Failed to retrieve blog posts import file from storage.", exc); } List <BlogPostImportResult> results; if (request.BlogPosts != null && request.BlogPosts.Count > 0) { downloadResponse.ResponseStream.Position = 0; var blogs = importService.DeserializeXMLStream(downloadResponse.ResponseStream); results = importService.ImportBlogs(blogs, request.BlogPosts, Context.Principal, request.CreateRedirects, request.RecreateCategoryTree, request.ReuseExistingCategories); } else { results = new List <BlogPostImportResult>(); } Task.Factory .StartNew(() => { }) .ContinueWith(task => { try { storageService.RemoveObject(fileUri); } catch (Exception exc) { LogManager.GetCurrentClassLogger().Error("Failed to delete blog posts import file.", exc); } }) .ContinueWith(task => { try { storageService.RemoveFolder(fileUri); } catch (Exception exc) { LogManager.GetCurrentClassLogger().Error("Failed to delete blog posts import folder.", exc); } }); return(new ImportBlogPostsResponse { Results = results }); }