.NET核心Web API和Swagger:在同一调用中发布文件和数据
我已经创建了一个.NETCore3.1WebAPI,并使用swagger进行文档/预览。我想上传一个文件,并发送一些数据给post通话。我可以打一个电话上传数据,这很有效。我可以再打一次电话来发送对象数据,这样就行了但尝试将2组合在一起(通过使用swagger界面填写数据)从未命中该方法,并给出错误:不支持的媒体类型。.NET核心Web API和Swagger:在同一调用中发布文件和数据,swagger,asp.net-core-webapi,Swagger,Asp.net Core Webapi,我已经创建了一个.NETCore3.1WebAPI,并使用swagger进行文档/预览。我想上传一个文件,并发送一些数据给post通话。我可以打一个电话上传数据,这很有效。我可以再打一次电话来发送对象数据,这样就行了但尝试将2组合在一起(通过使用swagger界面填写数据)从未命中该方法,并给出错误:不支持的媒体类型。 [HttpPost] [Route("Send")] public void Send(IFormFile file, Email emailInfo)
[HttpPost]
[Route("Send")]
public void Send(IFormFile file, Email emailInfo)
{
}
[HttpPost]
[Route("Test")]
public void Test(IFormFile file)
{
}
public class Email
{
public List<string> To { get; set; }
public string Body { get; set; }
public string Subject { get; set; }
public IFormFile Files { get; set; }
}
[HttpPost]
[路线(“发送”)]
公共无效发送(文件、电子邮件和电子邮件信息)
{
}
[HttpPost]
[路线(“测试”)]
公共无效测试(格式化文件)
{
}
公共类电子邮件
{
要{get;set;}的公共列表
公共字符串体{get;set;}
公共字符串主题{get;set;}
公共文件文件{get;set;}
}
您可能会注意到,在发送时,我将IFromFile作为参数,但在电子邮件obejct中也有IFromFile。出于某种原因,为了使Swagger在参数中显示文件选择按钮,它需要在两个位置 尝试使用[From Query]绑定:
[HttpPost]
[Route("Send")]
public void Send([FromQuery] Email emailInfo)
{
var emailFromParam = emailInfo;
}
输入:
显示参数值的调试输出: