jwa*_*nga 31 asp.net-mvc-routing asp.net-mvc-4 asp.net-web-api
使用标准的MapRoute方法,a可以传递一个字符串集合,表示在其中搜索我的控制器的命名空间.这似乎从MapHttpRoute中消失了.如何使用新的API路由定义默认命名空间?
Sha*_*zza 16
我们在Umbraco核心遇到了这个问题所以我们创建了自己的IHttpControllerSelector,源代码可以在这里找到:
您也可以安装WebAPIContrib包含的nuget包NamespaceHttpControllerSelector.
要注册这个,您可以在应用启动时执行此操作:
GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerSelector),
new NamespaceHttpControllerSelector(GlobalConfiguration.Configuration));
Run Code Online (Sandbox Code Playgroud)
实现非常简单,只处理具有"Namespaces"数据集的路由,您必须手动设置这些路由,因为MapHttpRoute不支持此操作.例:
var r = routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
r.DataTokens["Namespaces"] = new string[] {"Foo"};
Run Code Online (Sandbox Code Playgroud)
该实现还仅缓存具有重复名称的控制器,因为基础默认实现从其缓存中删除了重复项.
mar*_*ind 13
该功能目前不存在.