DNN Persona Bar模块路由

DNN Persona Bar module routing

我正在尝试为 dnn9 创建 dnn 角色栏模块, 前端部分向 url 发送请求,如 - http://dnndev.me/API/personaBar/ControllerName/ActionName 我得到错误 - 无法找到 http://dnndev.me/API/personaBar/ControllerName/ActionName 的控制器 在命名空间中搜索:Dnn.PersonaBar.AdminLogs.Services、Dnn.PersonaBar.ConfigConsole.Services、Dnn.PersonaBar.CssEditor.Services、Dnn.PersonaBar.Extensions.Services、Dnn.PersonaBar.Licensing.Services、Dnn.PersonaBar.Pages.Services、Dnn.PersonaBar.Recyclebin.Services、Dnn.PersonaBar.Roles.Services, Dnn.PersonaBar.Security.Services, Dnn.PersonaBar.Seo.Services, Dnn.PersonaBar.Servers.Services, Dnn.PersonaBar.SiteImportExport.Services, Dnn.PersonaBar.Sites.Services, Dnn.PersonaBar.SiteSettings.Services, Dnn.PersonaBar.SqlConsole.Services, Dnn.PersonaBar.TaskScheduler.Services, Dnn.PersonaBar.Themes.Services, Dnn.PersonaBar.UI.Services, Dnn.PersonaBar.Users.Services, Dnn.PersonaBar.Vocabularies.Services.

问题是如何将我的命名空间添加到此列表 注册从 DnnApiController 派生的自定义 api 控制器?

对于 SPA 模块,使用 ServiceRouteMapper 很简单,对于 DNN 角色栏模块是否可行?

对于 PersonaBar 扩展,您的 webapi 服务控制器应该继承自 PersonaBarApiController。

[MenuPermission(MenuName = "Dnn.Users")]
public class UsersController : PersonaBarApiController
{
    [HttpPost]
    public HttpResponseMessage CreateUser(CreateUserContract contract)
    {
        ...
    }
}

要安装为 PersonaBar 菜单扩展,您的 dnn 清单应如下所示:

<package name="Dnn.PersonaBar.Users" type="PersonaBar" version="01.06.00">
...
    <component type="PersonaBarMenu">
          <menu>
            <identifier>Dnn.Users</identifier>
            <moduleName>Users</moduleName>
            <controller>Dnn.PersonaBar.Users.Components.UsersMenuController, Dnn.PersonaBar.Users</controller>
            <resourceKey>nav_Users</resourceKey>
            <path>Users</path>
            <parent>Manage</parent>
            <order>10</order>
            <defaultPermissions>Administrators</defaultPermissions>
          </menu>
    </component>
...
</package>

这导致端点路径:/API/PersonaBar/Users/CreateUser

完整示例源代码here