【发布时间】:2014-08-05 15:08:50
【问题描述】:
我希望从 DotNetNuke 7.3.1 平台的源代码分发中提取数字资产管理器/管理模块 (DAM),将其编译为单独的模块,以便我可以进行一些修改以适应某些用例。
我做了什么:
- 我将 DigitalAssets 模块复制到本地开发环境 (DNN 7.3.1) 的新副本中
- 我更改了所有命名空间(我没有费心重命名文件名)
- 我使用 DotNetNuke.Modules.DigitalAssets.csproj 来获取 VisualStudio sln
- 我从 IIS 中清除了虚拟目录和应用程序
- 我修复了引发错误的库的其他问题
- 我得到它来编译并生成一个与原始模块名称不同的 .dll
所以,现在当我将这个模块扔到页面上时(理论上),我应该期待与框架附带的原始 DigitalAssets 模块完全相同的行为。
但它的行为不一样。
- 事实上,它似乎在刷新页面,就像它陷入了无限循环一样。
- 它也不加载任何文档。
- 它也不加载数字资产管理设置选项卡。
- 原始的 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 中构建模块的方式似乎存在问题。尝试在发布模式下构建它,虽然它构建成功,但我的 install 和 packages 文件夹没有包含所有重要的优点。
编辑 5:
目前所有试图获得该模块所有权的工作都已暂停。我设法让它代替原来相当容易的 DigitalAssets 模块进行编译。但现在它正在拉动 DotNetNuke.Web.dll(或者更具体的 File Uploader)。
编译 DotNetNuke.Web 的过程完全相同,非常简单。但现在我在不止一个地方交易平台的可升级性。我不是特别喜欢。
【问题讨论】:
-
您最终找到解决方案了吗?
-
不,我没有。我最终做的(为了节省时间)是重新编译 DNN 安装附带的 DigitalAssets 模块,从而将可升级性抛诸脑后。展望未来,我可以看到自己再次重新审视这个问题并尝试获得模块的所有权。
标签: dotnetnuke dotnetnuke-module