Asp.net web api 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 {

我从DNN开始,试图设置控制器和服务路线,但由于某些原因,它不起作用,我想我可能遗漏了一些东西,或者对它的工作原理有错误的理解

我有一个控制器,有两个动作

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是否会忽略它,并将其用作您在路线图中指定的路线?我不是专家,但我非常确定您需要文件夹/模块名称(它们匹配)。另外,我想不出一个不使用模块名的用例?