如果所请求的版本不受支持,我想返回HTTP 406。所以,我有:如何让MvcOptions.ReturnHttpNotAcceptable与ApiVersioning一起工作
services.AddApiVersioning(options =>
{
options.ReportApiVersions = true;
options.AssumeDefaultVersionWhenUnspecified = false;
options.ApiVersionReader = new MediaTypeApiVersionReader();
});
services.AddMvc(options =>
{
options.RespectBrowserAcceptHeader = true;
options.ReturnHttpNotAcceptable = true; // Return HTTP 406
});
但即使版本正确这总是返回HTTP 406(例如应用程序/ JSON; V = 1.0或应用\ vnd.acme + JSON; V = 1)。
如果我将ReturnHttpNotAcceptable
设置为false,则在版本不受支持时获取HTTP 400(错误请求),如果支持版本,则获取HTTP 200。
此外,如果我将ApiVersionReader
设置为HeaderApiVersionReader
,并将ReturnHttpNotAcceptable
设置为true,那么当版本不受支持时,它会返回HTTP 400而不是406。
如果我停用版本干脆,我得到HTTP 406正确地ReturnHttpNotAcceptable
设置为true,如果说,要求有appliction/xml
和API不支持XML。
我在ASP.NET API Versioning on Github上问了这个问题,但我想知道这是不是我想不出来的,并且可以从这个论坛得到答案。