Asp.net web api 可以使用ASP.NET WEB API上载图像,但在部署时不能上载

Asp.net web api 可以使用ASP.NET WEB API上载图像,但在部署时不能上载,asp.net-web-api,postman,Asp.net Web Api,Postman,我正在使用ASP.NETWebAPI将图像上载到服务器。但是当我将web api的源代码上传到gearhost.com并发出post请求时。我无法发布图像。这是我的web api控制器代码: [Route("upload")] [HttpPost] public async Task<string> Upload() { var ctx = HttpContext.Current; var root = ctx.Server.MapPath("/uploads/");

我正在使用ASP.NETWebAPI将图像上载到服务器。但是当我将web api的源代码上传到gearhost.com并发出post请求时。我无法发布图像。这是我的web api控制器代码:

[Route("upload")]
[HttpPost]
public async Task<string> Upload()
{
    var ctx = HttpContext.Current;
    var root = ctx.Server.MapPath("/uploads/");
    var provider = new MultipartFormDataStreamProvider(root);

    try
    {
        await Request.Content
                .ReadAsMultipartAsync(provider);

        foreach (var file in provider.FileData)
        {
            var name = file.Headers
                           .ContentDisposition
                           .FileName;

            // remove double quotes from string.
            name = name.Trim('"');

            var localFileName = file.LocalFileName;
            var filePath = Path.Combine(root, "files", name);

            // File.Move(localFileName, filePath);
            // SaveFilePathSQLServerADO(localFileName, filePath);
            // SaveFileBinarySQLServerADO(localFileName, name);

            // SaveFilePathSQLServerEF(localFileName, filePath);
            SaveFileBinarySQLServerEF(localFileName, name, filePath);

            if (File.Exists(localFileName))
                File.Delete(localFileName);
        }
    }
    catch 
    {
        return "Error";
    }

    return "File uploaded successfully!";
}

public void SaveFileBinarySQLServerEF(string localFile, string fileName, string filePath)
{
    // 1) Get file binary
    byte[] fileBytes;

    using (var fs = new FileStream(localFile, FileMode.Open, FileAccess.Read))
    {
        fileBytes = new byte[fs.Length];
        fs.Read(fileBytes, 0, Convert.ToInt32(fs.Length));
    }

    // 2) Create a Files object
    var file = new tblimage()
                   {
                       Data = fileBytes,
                       Names = fileName,
                       ContentType = filePath
                   };

    // 3) Add and save it in database
    using (var ctx = new coachEntities())
    {
        ctx.tblimages.Add(file);

        ctx.SaveChanges();
    }
}
以下是来自localhost的成功调用:

但是,当部署相同的代码并通过邮递员发出请求时,我收到以下错误:


也许,上传没有写权限 检查上载文件夹中的权限。 转到属性-安全
授予读写权限。

尽管在实时代码中返回异常详细信息不是一个好主意。因为您没有维护日志。对于测试,请返回异常详细信息。另外,您是如何得到响应的,如无法上载,请重试,因为代码中没有该响应

没有答案,但请阅读:最好使用基于Guid的名称将图像放置在临时文件夹中。您能否详细说明如何授予对特定文件夹的完全访问权限?我正在考虑,它是windows服务器。转到服务器。右键单击上载文件夹。转到属性,然后单击安全性,然后单击编辑,然后选择IIS组名称,然后选中允许写入,然后单击应用。现在检查它是否正常工作。如果无法上载,是否要重试?从何处返回?尽管在实时代码中返回异常详细信息不是一个好主意。因为您没有维护日志。对于测试,请返回异常详细信息。另外,你是如何得到响应的,比如无法上传,重试,因为它不在你的代码中Somnath Ghosh事实上我为live code编写了一个有点不同的消息exception实际上这是live code,但其余的都差不多。在控制器文件夹下转到userscontroller。虽然我之前共享的控制器代码也是相同的,但是异常消息不同。