我有一个Base控制器,它提供某些操作的基本实现:
[Route("api/[controller]")]
public class BaseAppController : Controller
{...
我有几个控制器派生自此,并使用基本控制器的路由调用它们。他们添加了各种功能。例如:
public class SomeController : BaseAppController
{
... more stuff ...
}
现在请求进入
它显然使用MyAction,它位于SomeController或BaseAppController中。
我想要实现的是,如果我发送请求:
我希望它确定NonExistentController不存在并改为使用BaseAppController。
欢迎任何指示。
答案 0 :(得分:0)
您可以使用FilterAttribute将404 Not Found状态代码的响应重定向到不同的URL /路由。
创建过滤器后,在FilterConfig.cs中注册它
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new MyNotFoundAttribute());
}
}
答案 1 :(得分:0)
您可以通过App_start文件夹中的Webapiconfig.cs捕获NonExistent控制器或方法。
将以下代码附加到Webapiconfig.cs
config.Routes.MapHttpRoute(
name: "ResourceNotFound",
routeTemplate: "{*uri}",
defaults: new { controller = "BaseApp", uri = RouteParameter.Optional });
这应该捕获所有未找到的api请求并发送给BaseAppContoller。