https://docs.microsoft.com/en-us/previous-versions/aspnet/hh944864(v%3Dvs.118)
我目前正在实现API版本控制。如果提供的版本无效,我想以状态代码406进行响应。如何通过IHttpControllerSelector
的SelectController方法执行此操作?
当前正在考虑创建某种类型的ErrorController并路由到它,但不确定是否有其他选择?
答案 0 :(得分:0)
创建一个返回Http 406的新控制器。 创建一个HttpControlDescriptor并重写CreateController来创建新的控制器。 然后IHttpControllerSelector实现返回控制描述符,然后构造该控制器,该控制器返回的版本无效。
答案 1 :(得分:0)
当前创建了一个处理异常的错误控制器,并通过以下方式路由至该异常:
var routeData = request.GetRouteData().Values;
routeData.Clear();
routeData["controller"] = "Error";
routeData["problemDetails"] = problemDetails;
return base.SelectController(request);
它可以工作,但我不是一个忠实的粉丝,如果有其他更好的选择,请暂时搁置这个问题。