我正在开发一个 ASP.NET Core Web API 项目,特别是使用 Microsoft 提供的
ASP.NET Core Web API
模板。我遇到了一个问题,即 Swagger UI 未显示需要文件作为输入的控制器操作的上传按钮。
设置和配置:
项目模板: 该项目是使用
ASP.NET Core Web API
模板创建的。这包括具有 Swagger 支持的默认 WeatherForecast
API。
Program.cs
中的 Swagger 配置:
builder.Services.AddSwaggerGen();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
.csproj 文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
</ItemGroup>
</Project>
WeatherForecastController.cs
中的控制器操作:
[HttpPost]
public IActionResult UploadFile([FromForm] IFormFile file)
{
return Ok();
}
问题:
通过 Visual Studio 作为 HTTP 实例启动应用程序后,Swagger UI 不会显示文件输入的预期上传按钮。当前的 Swagger UI 如下所示:
预期结果:
我期待看到类似这样的上传按钮:
有人可以建议为什么上传按钮没有出现以及我如何解决这个问题吗?
发现问题...
对于使用
Swashbuckle.AspNetCore
和 .net 8 的 6.5
版本 -
处理表格和文件上传。只需省略[FromForm]
即可。根据 Microsoft 官方文档,该属性看起来不应用于 .net core 2.2+。
[HttpPost]
[Route("")]
public IActionResult Post(IFormFile file)
{
}