.net 核心 Web API - 415 不支持的媒体类型

Posted

技术标签:

【中文标题】.net 核心 Web API - 415 不支持的媒体类型【英文标题】:.net core Web API - 415 Unsupported Media Type 【发布时间】:2019-07-28 10:39:09 【问题描述】:

我在学习课程时正在构建一个 .net 核心 WebApi。我正在尝试上传照片,但我不断收到错误

415 - 不支持的文件类型

这里是相关的控制器

[HttpPost]
public async Task<IActionResult> AddPhotoForUser(int userId, [FromForm] PhotoForCreationDto photoForCreationDTO)

    if(userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
        return Unauthorized();

    var userFromRepo = await _repo.GetUser(userId);

    var file = photoForCreationDTO.File;

    var uploadResult = new ImageUploadResult();

    if(file.Length > 0)
    
        using(var stream = file.OpenReadStream())
        
            var uploadParams = new ImageUploadParams()
            
                File = new FileDescription(file.Name, stream),
                Transformation = new Transformation().Width(500).Height(500).Crop("fill").Gravity("face")
            ;

            uploadResult = _cloudinary.Upload(uploadParams);
        
    

    photoForCreationDTO.Url = uploadResult.Uri.ToString();
    photoForCreationDTO.PublicId = uploadResult.PublicId;

    var photo =_mapper.Map<Photo>(photoForCreationDTO);

    if(!userFromRepo.Photos.Any(u => u.IsMain))
        photo.IsMain = true;

    userFromRepo.Photos.Add(photo);

    if(await _repo.SaveAll())
    
        var photoToReturn = _mapper.Map<PhotoForReturnDto>(photo);
        return CreatedAtRoute("GetPhoto", new  id = photo.Id, photoToReturn);
    

    return BadRequest("Could not add the photo");
   

我不知道错误是什么?有什么想法吗?

Response and Request Headers

【问题讨论】:

您是否检查过您的管道中有哪些类型的媒体类型格式化程序? 我在哪里检查?我是 .net 核心的新手! 这是一个很大的话题。您可能想要搜索“asp.net 核心媒体类型格式化程序”。我认为您在这里提供的信息不足以回答这个问题。很可能上面的代码都没有被执行。 【参考方案1】:

您的 c# 代码在后台发送 HTTP POST 请求。此请求有一个 Content-Type 标头。如果 Content-Type 与 POST 请求正文的实际内容类型不匹配,则会收到 415。

尝试附加具有适当类型的 Content-Type 标头。有关可能的类型值的列表,请参阅What are all the possible values for HTTP "Content-Type" header?

【讨论】:

以上是关于.net 核心 Web API - 415 不支持的媒体类型的主要内容,如果未能解决你的问题,请参考以下文章

角度 http post 错误 415 .net 核心 web api

IIS 上的 Angular 发布到 Asp.Net(非核心)Web Api 错误 415

使用 CORS 在 IIS 上运行的 Angular 2 和 .net 核心 Web 应用程序之间的 HTTP 415 OPTIONS 请求

Web API Post 返回 415 - 不支持的媒体类型

调用 Web API 2 端点时出现 HTTP 415 不支持的媒体类型错误

SQL CLR 存储过程调用 Web 服务接收 System.Net.WebException:请求失败,HTTP 状态 415:不支持的媒体类型