Umbraco v12自定义插件调用API出现404错误求助
Umbraco v12自定义仪表板API 404错误修复方案
针对自定义仪表板调用API返回404的问题,以下是具体排查和修复步骤:
1. 修正API请求路径
Umbraco v12后台API的标准路由前缀为/umbraco/backoffice/api/,你的前端请求路径缺少/umbraco前缀,导致路由匹配失败。
修改App_Plugins/MyPlugin/resources/myplugin.resource.js中的请求URL:
angular .module('umbraco.resources') .factory('MyPluginResource', function ($q, $http, umbRequestHelper) { return { get: function () { return umbRequestHelper.resourcePromise( $http.get('/umbraco/backoffice/api/MyPlugin/GetTest'), // 修正此处路径 'Failed to fetch data' ) } } })
2. 添加package.manifest配置文件
Umbraco需要通过package.manifest识别插件、加载前端资源并注册仪表板。在App_Plugins/MyPlugin/目录下创建该文件,内容如下:
{ "dashboards": [ { "alias": "MyPlugin.Dashboard", "view": "/App_Plugins/MyPlugin/views/myplugin.html", "sections": [ "content" ], // 指定仪表板显示的后台区域,可按需修改 "weight": 100 } ], "javascript": [ "/App_Plugins/MyPlugin/resources/myplugin.resource.js", "/App_Plugins/MyPlugin/Controllers/myplugin.controller.js" ] }
3. 优化API控制器代码
完善构造函数的依赖注入逻辑(避免潜在的依赖问题):
namespace MyPlugin.Controllers { public class MyPluginController : UmbracoAuthorizedApiController { private readonly UmbracoDatabase _database; public MyPluginController(UmbracoDatabase database) { _database = database; } [HttpGet] public dynamic GetTest() { dynamic settings = new ExpandoObject(); settings.data = "Add your fetched data here"; return settings; } } }
4. 验证目录结构与编译状态
确保插件目录结构符合Umbraco规范:
App_Plugins/ └── MyPlugin/ ├── Controllers/ │ ├── MyPluginController.cs │ └── myplugin.controller.js ├── resources/ │ └── myplugin.resource.js ├── views/ │ └── myplugin.html └── package.manifest
同时确认项目已编译,API控制器的程序集已正确生成并被Umbraco扫描到。
测试步骤
- 重启Umbraco后台应用
- 清除浏览器缓存(避免旧资源干扰)
- 打开后台仪表板,查看控制台是否仍有404错误
内容的提问来源于stack exchange,提问作者Sjobi
相关产品推荐
相关产品推荐

