webapi 路由限制命名控件_MVC5为WebAPI添加命名空间的支持

本文介绍了如何解决MVC框架默认不支持WebAPI路由命名空间的问题。通过自定义实现IHttpControllerSelector接口的ZhuSirNamespaceHttpControllerSelector类,以及配置WebAPI路由设置,使得在指定命名空间内查找WebAPI控制器成为可能,从而允许将WebAPI分离到单独的类库中。
摘要由CSDN通过智能技术生成

前言

默认情况下,微软提供的MVC框架模板中,WebAPI路由是不支持Namespace参数的。这导致一些比较大型的项目,无法把WebApi分离到单独的类库中。

本文将提供解决该问题的方案。

微软官方曾经给出过一个关于WebAPI支持Namespace的扩展,其主要内容就是自定义实现了IHttpControllerSelector接口,通过路由配置时替换掉MVC中自带的DefaultHttpControllerSelector达到WebAPI支持Namespace的目的。但是经过我的测试,效果并不好。这就就不贴微软官方的源码了。

解决方案

下面我介绍一下我的解决方案。

首先看一下我自定义的目录结构,如下图:

首先定义一个类,名字可以随意,我这里命名为ZhuSirNamespaceHttpControllerSelector,他继承自MVC框架默认的DefaultHttpControllerSelector类,该继承类主要目的是在请求URI到达WebAPI路由时检索我们指定的命名空间的WebAPI控制器。下面是ZhuSirNamespaceHttpControllerSelector类的源代码,可直接复制到你自己的项目中就可以用:

///

/// 扩展自DefaultHttpControllerSelector类的控制器选择器,目前在用

///

public class ZhuSirNamespaceHttpControllerSelector : DefaultHttpControllerSelector

{

private const string NamespaceRouteVariableName = "namespaces";

private readonly HttpConfiguration _configuration;

private readonly Lazy> _apiControllerCache;

public ZhuSirNamespaceHttpControllerSelector(HttpConfiguration configuration)

: base(configuration)

{

_configuration = configuration;

_apiControllerCache

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值