public async Task <IHttpActionResult> Upload(int id) { if (!Request.Content.IsMimeMultipartContent()) { return(BadRequest("File improperly formatted.")); } string root = HttpContext.Current.Server.MapPath("~/App_Data"); var provider = new MultipartFormDataStreamProvider(root); try { await Request.Content.ReadAsMultipartAsync(provider); var file = provider.FileData[0]; string fileName = file.LocalFileName; string hasHeaderFormValue = provider.FormData.GetValues("hasHeader")[0]; bool hasHeader = hasHeaderFormValue.Contains("yes") ? true : false; FileUploadHelper helper = new FileUploadHelper(); List <string> accessionNumbers = helper.ParseFileToList(fileName, hasHeader); List <RejectedAccessionDto> rejectedAccessions = new List <RejectedAccessionDto>(); using (var context = new CCFDataEntities()) { var researchProjectInDb = context.ResearchProjects.Single(p => p.ProjectID == id); if (researchProjectInDb == null) { return(BadRequest("The selected research project does not exist.")); } rejectedAccessions = ValidateUploadedAccessions(accessionNumbers, context, researchProjectInDb); } return(Ok(rejectedAccessions)); } catch (InvalidCastException e) { return(InternalServerError(e)); } catch (Exception e) { return(InternalServerError(e)); } }