ASP.NET WEB API无法将多部分/表单数据(图像)上传到Web服务器

时间:2018-07-29 18:32:47

标签: asp.net api web

在通过ASP.NET WEB API成功通过localhost上传图像之后。我将项目上传到托管服务器,但是这次我得到了错误

  

发生错误

这是我的控制人

   tutorEntities entities = new tutorEntities();
    [HttpPost]
    public HttpResponseMessage ImageUp()
    {

        var httpContext = (HttpContextWrapper)Request.Properties["MS_HttpContext"];
        img std = new img();
        //      std.Title = httpContext.Request.Form["Title"];
        //           std.RollNo = httpContext.Request.Form["RollNo"];
        //           std.Semester = httpContext.Request.Form["Semester"];
        HttpResponseMessage response = new HttpResponseMessage();
        var httpRequest = HttpContext.Current.Request;
        if (httpRequest.Files.Count > 0)
        {
            string random = Guid.NewGuid().ToString();
            string url = "/UserImage/" + random + httpRequest.Files[0].FileName.Substring(httpRequest.Files[0].FileName.LastIndexOf('.'));
            Console.WriteLine(url);
            string path = System.Web.Hosting.HostingEnvironment.MapPath(url);


            httpRequest.Files[0].SaveAs(path);
            std.Path = "http://localhost:2541/" + url;

        }
        entities.imgs.Add(std);
        entities.SaveChanges();

        return Request.CreateResponse(HttpStatusCode.OK);
    }

1 个答案:

答案 0 :(得分:0)

确保AppPoolIdentity用户对UserImage文件夹具有写权限。另外,在代码中捕获异常以进行调试:

try {
 var httpContext = (HttpContextWrapper)Request.Properties["MS_HttpContext"];
        img std = new img();
        //      std.Title = httpContext.Request.Form["Title"];
        //           std.RollNo = httpContext.Request.Form["RollNo"];
        //           std.Semester = httpContext.Request.Form["Semester"];
        HttpResponseMessage response = new HttpResponseMessage();
        var httpRequest = HttpContext.Current.Request;
        if (httpRequest.Files.Count > 0)
        {
            string random = Guid.NewGuid().ToString();
            string url = "/UserImage/" + random + httpRequest.Files[0].FileName.Substring(httpRequest.Files[0].FileName.LastIndexOf('.'));
            Console.WriteLine(url);
            string path = System.Web.Hosting.HostingEnvironment.MapPath(url);


            httpRequest.Files[0].SaveAs(path);
            std.Path = "http://localhost:2541/" + url;

        }
        entities.imgs.Add(std);
        entities.SaveChanges();

        return Request.CreateResponse(HttpStatusCode.OK);
}
catch(Exception ex) {
      var response = new HttpResponseMessage(HttpStatusCode.InternalServerError)
      {
           Content = new StringContent(ex.ToString()),
           ReasonPhrase = "Error"
      }

      throw new HttpResponseException(response);
}