Dotnetnuke DNN角色栏模块路由

Dotnetnuke DNN角色栏模块路由,dotnetnuke,dotnetnuke-9,dnn-module,Dotnetnuke,Dotnetnuke 9,Dnn Module,我正在尝试为dnn9创建dnn角色栏模块, 前端部分向url发送请求,如- 我得到一个错误- 找不到的控制器 在命名空间中搜索:Dnn.PersonaBar.AdminLogs.Services、Dnn.PersonaBar.ConfigConsole.Services、Dnn.PersonaBar.CssEditor.Services、Dnn.PersonaBar.Extensions.Services、Dnn.PersonaBar.Licensing.Services、Dnn.Persona

我正在尝试为dnn9创建dnn角色栏模块, 前端部分向url发送请求,如- 我得到一个错误- 找不到的控制器 在命名空间中搜索: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 persona bar模块可以吗?

对于PersonaBar扩展,您的webapi服务控制器应该从PersonalBarapicController继承

[MenuPermission(MenuName = "Dnn.Users")]
public class UsersController : PersonaBarApiController
{
    [HttpPost]
    public HttpResponseMessage CreateUser(CreateUserContract contract)
    {
        ...
    }
}
要安装为PersonalBar菜单扩展,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>

...
Dnn.用户
使用者
Dnn.PersonaBar.Users.Components.UsersMenuController,Dnn.PersonaBar.Users
导航用户
使用者
管理
10
管理员
...
这将导致端点路径:/API/PersonaBar/Users/CreateUser


完整示例源代码

对于PersonaBar扩展,您的webapi服务控制器应该从PersonaBarapicController继承

[MenuPermission(MenuName = "Dnn.Users")]
public class UsersController : PersonaBarApiController
{
    [HttpPost]
    public HttpResponseMessage CreateUser(CreateUserContract contract)
    {
        ...
    }
}
要安装为PersonalBar菜单扩展,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>

...
Dnn.用户
使用者
Dnn.PersonaBar.Users.Components.UsersMenuController,Dnn.PersonaBar.Users
导航用户
使用者
管理
10
管理员
...
这将导致端点路径:/API/PersonaBar/Users/CreateUser


完整示例源代码

我按照您的建议从PersonalBarapicController派生了api控制器,并得到了相同的错误。似乎仅仅从PersonalBarapicController继承是不够的,我是否应该在.dnn manifest包type=“Module”中使用?或者type=“PersonaBar”就足够了?我用更多的细节修改了我的答案。我按照您的建议从PersonaBarApiController派生了我的api控制器,得到了相同的错误。似乎仅仅从PersonalBarapicController继承是不够的,我是否应该在.dnn manifest包type=“Module”中使用?或者type=“PersonaBar”就足够了吗?我更详细地修改了我的答案。