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

问题描述 投票:0回答:1

通过 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);
    }
asp.net asp.net-web-api
1个回答
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);
}
© www.soinside.com 2019 - 2024. All rights reserved.