Asp.net web api DNN服务路由映射器中的多个路由不工作
我从DNN开始,试图设置控制器和服务路线,但由于某些原因,它不起作用,我想我可能遗漏了一些东西,或者对它的工作原理有错误的理解 我有一个控制器,有两个动作Asp.net web api DNN服务路由映射器中的多个路由不工作,asp.net-web-api,dotnetnuke,Asp.net Web Api,Dotnetnuke,我从DNN开始,试图设置控制器和服务路线,但由于某些原因,它不起作用,我想我可能遗漏了一些东西,或者对它的工作原理有错误的理解 我有一个控制器,有两个动作 public class Name : DnnApiController{ public GetApple(string id){ } public GetOrange(string id){ } } 我已经创建了服务路线 public class RouteMapper : IServiceRouteMapper {
public class Name : DnnApiController{
public GetApple(string id){
}
public GetOrange(string id){
}
}
我已经创建了服务路线
public class RouteMapper : IServiceRouteMapper
{
public void RegisterRoutes(IMapRoute mapRouteManager)
{
mapRouteManager.MapHttpRoute("Name", "Apple1", "{controller}/{action}/{id}", new[] {"MyServices"});
mapRouteManager.MapHttpRoute("Name", "Orange2", "{controller}/{action}/{id}", new[] {"MyServices"});
}
}
当我运行它时,只有一个动作被解决,而另一个动作我得到400分
有什么建议吗?为什么?试着用下面的方式宣布你的路线
routeManager.MapHttpRoute("ModuleName", "Apple1", "{controller}/{action}/{ID}", new string[] { "YourNameSpace.Services.Controllers" });
确保将YourNameSpace替换为模块的名称空间和模块名称
您要获取服务的url是什么
这将假定以下类型的设置:
namespace Services.Controllers
{
public class NameServiceController: DnnApiController, IServiceRouteMapper
{
}
}
另外,我很确定你的控制器类名需要以controller这个词结尾,当你引用url时,你就省略了controller
因此,url格式如下所示:
DesktopModules/[ModuleName]/api/[ControllerName(从末尾移除控制器)]/[Action Name]/[id]
www.yourportal.com/desktopmodules/ModuleName/NameService/Apple1/ID
希望这能有所帮助您在路由中指定的模块名是否必须作为模块存在于DNN中?或者,如果文件夹不存在,DNN是否会忽略它,并将其用作您在路线图中指定的路线?我不是专家,但我非常确定您需要文件夹/模块名称(它们匹配)。另外,我想不出一个不使用模块名的用例?