【问题标题】:DotNetNuke Modifying Digital Assets ManagerDotNetNuke 修改数字资产管理器
【发布时间】:2014-08-05 15:08:50
【问题描述】:

我希望从 DotNetNuke 7.3.1 平台的源代码分发中提取数字资产管理器/管理模块 (DAM),将其编译为单独的模块,以便我可以进行一些修改以适应某些用例。

我做了什么:

  1. 我将 DigitalAssets 模块复制到本地开发环境 (DNN 7.3.1) 的新副本中
  2. 我更改了所有命名空间(我没有费心重命名文件名)
  3. 我使用 DotNetNuke.Modules.DigitalAssets.csproj 来获取 VisualStudio sln
  4. 我从 IIS 中清除了虚拟目录和应用程序
  5. 我修复了引发错误的库的其他问题
  6. 我得到它来编译并生成一个与原始模块名称不同的 .dll

所以,现在当我将这个模块扔到页面上时(理论上),我应该期待与框架附带的原始 DigitalAssets 模块完全相同的行为。

但它的行为不一样。

  1. 事实上,它似乎在刷新页面,就像它陷入了无限循环一样。
  2. 它也不加载任何文档。
  3. 它也不加载数字资产管理设置选项卡。
  4. 原始的 DigitalAssets 模块运行良好。

我注意到表单的控制台窗口中出现 POST 错误:

JQMIGRATE:日志记录处于活动状态 jquery-migrate.js?cdv=23:21

POST http://devsite1.me/DesktopModules/DigitalAssets/API/ContentService/GetFolderContent 401(未经授权) - jquery.js?cdv=23:8526

发送 - jquery.js?cdv=23:8526

jQuery.extend.ajax - jquery.js?cdv=23:7978

loadFolder - dnn.DigitalAssets.js?cdv=23:1492

loadFolderFirstPage - dnn.DigitalAssets.js?cdv=23:1437

loadInitialContent - dnn.DigitalAssets.js?cdv=23:1431

gridOnGridCreated - dnn.DigitalAssetsController.js?cdv=23:47

gridOnGridCreated - dnn.DigitalAssets.js?cdv=23:205

(匿名函数) - jquery.js:9597

Telerik.Web.UI.RadWebControl.raiseEvent - jquery.js:9597

(匿名函数) - jquery.js:9597

Telerik.Web.UI.RadGrid.initialize - jquery.js:9597

Sys.Component.endUpdate - jquery.js:9597

Sys.Component.create - jquery.js:9597

(匿名函数)- My-DAM?folderId=41&view=gridview&pageSize=10:1154

(匿名函数) - jquery.js:9597

Sys._Application._raiseInit - jquery.js:9597

Sys._Application.initialize - jquery.js:9597

b - jquery.js:9597

document.addEventListener.a - jquery.js:9597

有趣的是,我没有收到任何其他错误或事件日志。这些匿名函数调用让我很担心。

在我看来,我错过了一些重要的事情。非常感谢您提供任何帮助。

编辑 1:

loadFolder - dnn.DigitalAssets.js?cdv=23:1492中发现了这个错误

加载文件夹内容时出错

ajax 调用/DesktopModules/DigitalAssets/API/ContentService/GetFolderContent 服务导致的错误。问题在于它实际上指向原始的 DigitalAssets 模块,而不是我正在处理的模块。所以,这必须改变。

Status 401 Unauthorized 没有得到修复。

编辑 2:

经过进一步调查,我在 ContentServiceController.cs 中发现了 GetFolderContent() 函数,该函数又应该返回一个具有文件夹结构的对象。

此功能上的[AllowAnonymous] 也没有使状态 401 消失。

编辑 3:

将 url 更改为 /DesktopModules/Module_Name/API/ContentService/GetFolderContent 以外的任何内容会导致 ajax 调用抛出 Status 404 Not Found 并显示错误对话框 An error occured while loading the folder content. Not Found

我希望这意味着 ajax 调用实际上会到达 GetDolderContent() 并返回。至于为什么会返回 401 状态仍在调查中。

编辑 4:

好的,我在 Visual Studio 中构建模块的方式似乎存在问题。尝试在发布模式下构建它,虽然它构建成功,但我的 installpackages 文件夹没有包含所有重要的优点。

编辑 5:

目前所有试图获得该模块所有权的工作都已暂停。我设法让它代替原来相当容易的 DigitalAssets 模块进行编译。但现在它正在拉动 DotNetNuke.Web.dll(或者更具体的 File Uploader)。

编译 DotNetNuke.Web 的过程完全相同,非常简单。但现在我在不止一个地方交易平台的可升级性。我不是特别喜欢。

【问题讨论】:

  • 您最终找到解决方案了吗?
  • 不,我没有。我最终做的(为了节省时间)是重新编译 DNN 安装附带的 DigitalAssets 模块,从而将可升级性抛诸脑后。展望未来,我可以看到自己再次重新审视这个问题并尝试获得模块的所有权。

标签: dotnetnuke dotnetnuke-module


【解决方案1】:

只是为了结束这个问题,结论如下。

项目; Digital Assets Manager 的收购已被搁置。当时对 DNN 内部工​​作原理的了解还不够,无法让我在不浪费太多时间的情况下取得进步。

现在我最终修改了核心模块(不理想)。将来当我需要尽快完成的事情减少时,我一定会重新考虑这个想法。

【讨论】:

    猜你喜欢
    • 2021-08-25
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    相关资源
    最近更新 更多