gpt4 book ai didi

c# - .Net Core 2.2 Web API 在 GET 上获取 415 不支持的媒体类型?

转载 作者:太空狗 更新时间:2023-10-29 17:53:10 26 4
gpt4 key购买 nike

我已经将我的 WebApi 项目升级到 .net core 2.2,从那时起,我所有的 Controller 都从每个 GET 调用中提取 415 Unsupported Media type。这太奇怪了,因为根据我的经验,415 通常是为 POST 保留的。

如果我降级回 2.1,问题就会消失。我已经在下面发布了我的 Controller 设置和基本启动配置的代码。

    [Route("v1/[controller]")]
[Produces("application/json")]
[Consumes("application/json")]
[Authorize]
public class JobsController : ControllerBase
{
[HttpGet]
public IActionResult GetJobSummaryByUserId([FromQuery] PagedJobRequest pagedJobRequest)
{
if (pagedJobRequest.UserId == Guid.Empty)
{
pagedJobRequest.UserId = _jwtUtility.GetIdentityId();
}
if (!_jwtUtility.DoesJwtIdentityIdMatch(pagedJobRequest.UserId) && !_jwtUtility.IsUserInRole("Administrator"))
{
return Unauthorized();
}

var returnObj = _jobsService.GetJobSummariesByUserId(pagedJobRequest);

return Ok(returnObj);
}
}

在 Startup.cs 中:

 public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddCors(x => x.AddPolicy("MVRCors", y => y.AllowCredentials().AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin()));
services.AddEntityFrameworkSqlServer();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{

if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseSwagger();
app.UseSwaggerUI(s =>
{
s.SwaggerEndpoint("/swagger/v1/swagger.json", "MVR.Api.Jobs");
});
}

ConfigureExceptionHandling(app);
app.UseMvc();
app.UseCors("MVRCors");

loggerFactory.AddSerilog();
}

最佳答案

这是 2.2 的一个已知问题

https://github.com/aspnet/AspNetCore/issues/4396

看来 this bug fix在 2.2 中导致任何 GET 请求遵守 Controller 上的 [Consumes] 属性。以前,在 2.1 中,他们没有。

解决方法是从 Controller 中删除 [Consumes] 属性并将其仅应用于 Controller 中的非 GET 方法,或者降级并继续使用 .NET核心 2.1,直到他们发布修复。

它有already been fixed对于 3.0 .NET Core 版本。我认为他们仍在决定是否会在 2.2 服务版本中修复它。

关于c# - .Net Core 2.2 Web API 在 GET 上获取 415 不支持的媒体类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53838138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com