0

我正在尝试为 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。服务,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 角色栏模块是否可行?

4

1 回答 1

2

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

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

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

<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

完整的示例源代码在这里

于 2017-09-14T14:21:16.967 回答