public async Task <IHttpActionResult> Import() { if (!Request.Content.IsMimeMultipartContent()) { return(BadRequest("You are supposed to upload a file.")); } var uploadFolder = HostingEnvironment.MapPath($"~/App_Data/Uploads/{System.Guid.NewGuid()}"); Directory.CreateDirectory(uploadFolder); var streamProvider = new MultipartFormDataStreamProvider(uploadFolder); var result = await Request.Content.ReadAsMultipartAsync(streamProvider); var states = result .FileData .Select(fd => _templateParser.FromFile(fd.LocalFileName)) // get Product instances .Select(prod => new State(prod)); // get State instances var stateIds = new List <string>(); foreach (var state in states) { var stateId = System.Guid.NewGuid().ToString(); SerializeState(state, stateId); stateIds.Add(stateId); } await Task.Run(() => Directory.Delete(uploadFolder, true)); return(Ok(stateIds)); }