public async Task <IHttpActionResult> CreateProblem() { if (!user_service.IsAuthorizedToCreateProblem()) { return(Unauthorized()); } // request contain must be of type multipart/form-data. if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } string root = HttpContext.Current.Server.MapPath("~/App_Data"); var provider = new MultipartFormDataStreamProvider(root); try{ // Read the form data. await Request.Content.ReadAsMultipartAsync(provider); } catch (Exception e) { return(InternalServerError(e)); } var problem_form = new ProblemCreationForm(provider.FormData, provider.FileData); FormDataValidationResult result = problem_form.Validate(); if (result.IsValid) { problem_repository.CreateProblem(problem_form); return(Ok()); } else { return(new BadHttpRequest(result.ErrorMessages)); } }