【问题标题】:.net Core 3.0 Preview 2 - [406: Not Acceptable].net Core 3.0 预览版 2 - [406:不可接受]
【发布时间】:2019-02-19 18:33:53
【问题描述】:

我基于 Microsoft 文档使用 Microsoft 2.2 构建了一个 Web API。 一切都按预期工作。

更新到 .net Core 3.0 Preview 2 后,所有端点都返回 [406: Not Acceptable]。

缺少一些东西,但到目前为止我无法理解缺少什么。以下代码与 .net core 2.2 上的代码相同。

Program.cs

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }
    public static IWebHostBuilder CreateWebHostBuilder(string[] args)
    {
        return WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();
        //.ConfigureKestrel((context, options) => { });
    }
}

Startup.cs

public class Startup
{

    public void ConfigureServices(IServiceCollection services)
    {
        // Dependency Injection - Services
        services.AddSingleton<IXXXService, XXXService>();

        services.AddMvc();

        services.AddCors(options =>
        {
            options.AddPolicy("AllowAll",
                builder => builder.WithOrigins("*").AllowAnyHeader().AllowAnyMethod());
        });

        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
            c.EnableAnnotations();
        });
    }


    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseMvc();
        app.UseCors("AllowAll");

        app.UseSwagger();
        app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API"); });
    }
}

XXXController.cs

[ApiController]
[Route("api/xxx")]
public class XXXController : BaseController
{
    private readonly IXXXService _service;

    public XXXController(IXXXService service)
    {
        _service = service;
    }

    [HttpGet]
    [Produces("application/json", Type = typeof(PagedDto<XXX>))]
    [SwaggerOperation(
        Summary = "Gets all the XXX",
        Description = "Requires admin privileges",
        OperationId = "GetAllXXX",
        Tags = new[] {"XXX"}
    )]
    public IActionResult GetAllXXX([FromQuery] PagingDto pagging)
    {
        return Ok(_service.GetAllXXX(pagging));
    }
}

【问题讨论】:

    标签: .net-core .net-core-3.0


    【解决方案1】:

    我在 Microsoft github 上发布了这个问题,这是他们的回复:

    You have to install the nuget package Microsoft.AspNetCore.Mvc.NewtonsoftJson
    In your startup.cs file, add the JsonFormatter like this :
    

    services.AddMvc().AddNewtonsoftJson().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);

    通过此更改,一切都按预期工作。

    【讨论】:

    • 这可能是 aspnet core 3 中最大的变化——JSON.NET 现在不再捆绑。
    猜你喜欢
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多