我有一个DNN任务,只需运行一些Javascript来根据几个输入字段计算价格.这个模块在我们的生产网站上运行良好,但我们有一家公司为我们做了一个改善网站外观的模型,并且模块在这个新系统下失败了.(DNN 05.06.00(459)虽然之前已经是5.5了......但我还是徒劳地希望这是旧修订版中的一个错误.)
令人难以置信的是,当我登录DNN并以管理员身份使用编辑模式时,模块工作正常.在这种情况下,JavaScript的小片段加载很好并填充字段导致价格.
另一方面,我点击"查看"(或者更重要的是,如果我根本没有登录),页面会加载缓存副本.甚至更奇怪,我发现生成了\ Portals\2\Cache\Pages中的缓存文件,然后只使用了缓存数据.
加载缓存副本时,JavaScript不会出现(通常是通过Page.ClientScript.RegisterClientScriptBlock()创建的.另外,将数据发布到服务器的按钮不会执行任何服务器端代码(用调试器确认)但只是重新加载缓存的副本.
如果我手动删除\ Portals\2\Cache\Pages中的文件,那么一切正常,但我必须在每次加载页面后执行此操作:如果不这样做,只需加载上次重复生成的页面.
重置应用程序(通过UI或编辑web.config)不会更改此设置,并且从"主机设置"页面清除缓存实际上并不会清除这些缓存的页面.
我猜测编辑模式以某种方式绕过了缓存,但我已经关闭了网站上的所有缓存(这对于性能而言非常糟糕)并且缓存版本仍然被加载.
有没有人见过这样的东西?不应该清除缓存清除文件(我正在使用文件提供程序进行缓存)?如果用户回帖,即使缓存的页面也不应该返回服务器?
编辑:我应该指出权限似乎不是缓存目录中的问题... 其他页面缓存输出从此文件夹中删除,只是此页面有此问题.
编辑2:澄清我没有提供的一些设置和条件.首先,该模块在DNN 5.6.0下的生产中工作正常.在我们的测试环境中,咨询公司的更改失败了(仅在理论上改变了皮肤和页面布局:模块源本身验证为未更改).两者之间的所有缓存设置等都已经过相同的验证,我们只能在找不到问题的其他原因时将模块缓存设置为0和-1(并完全禁用测试站点的缓存).我已经在测试中的许多其他页面上看到了缓存正常工作:这个页面有一些导致问题的原因.
我们已经根据顾问的工作制定了一个可安装的皮肤,因为我怀疑它们已经以某种方式损坏了DNN安装(我认为数据库方面).
我一直在为项目创建可重用的组件作为jQuery插件.我喜欢能够抽象出逻辑,并根据具体情况注入所有上下文(选择器,选项等).
现在,我开始使用KnockoutJS,并编写了一个很好的小jQuery插件,它使用Knockout作为其内部逻辑.它工作得很好,但我想知道是否有更好的方法来做到这一点?Knockout本身是否有用于创建可重用组件的模式/约定,或者这种模式是否正常?
这是一个例子,它应该足以让你知道我在做什么.
/*globals jQuery, knockout */
(function ($, ko) {
"use strict";
$.fn.itemManager = function (options) {
// set up the plugin options
var opts = $.extend({}, $.fn.itemManager.defaultOptions, options),
$wrap = $(this),
templateUrl = '/path/to/template/dir/' + opts.templateName + '.html';
// set up the KO viewmodel
function ItemManagerModel(items) {
var self = this;
self.items = ko.observableArray(items);
self.chosenItemId = ko.observable();
self.chosenItemData = ko.observable();
// generic method for navigating the Item hierarchy
self.find = function (array, id) {
/* ... */
}; …Run Code Online (Sandbox Code Playgroud) Visual Studio和SharpDevelop都没有设置委托来以相同的方式处理事件.它们的设置方式略有不同.这使得很难在一个地方使用VS而在另一个地方使用#Develop(在同一个项目中).
例如,在VB中,Visual Studio执行以下操作:
Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
Me.DialogResult = System.Windows.Forms.DialogResult.OK
Me.Close()
End Sub
Run Code Online (Sandbox Code Playgroud)
而......
Friend WithEvents OK_Button As System.Windows.Forms.Button
Run Code Online (Sandbox Code Playgroud)
因此,声明控件,不仅具有不同的范围(这也可能是一个问题,但不是这篇文章的主题),但是有一个问题.然后,handle子句将事件处理程序分配给它.
在#Develop中,它是这样完成的......
Sub OK_ButtonClick(sender As Object, e As EventArgs)
End Sub
Run Code Online (Sandbox Code Playgroud)
和......
Private button1 As System.Windows.Forms.Button
Run Code Online (Sandbox Code Playgroud)
然后,在InitializeComponent方法中
AddHandler Me.button1.Click, AddressOf Me.OK_ButtonClick
Run Code Online (Sandbox Code Playgroud)
关于这一点最烦人的事情是,即使它以一种方式完成,另一种ide将重做它,具有重复声明,当然还有编译时错误.
有没有人知道解决这个问题的方法,某种方式来自定义默认处理程序?即使它只是某种方式可以关闭它们,所以它可以手动输入?
我刚刚创建了一个新的DotNetNuke 6网站.默认安装在每个页面上都有一个社交链接区域.我可以在一个中心位置更改社交链接的内容(例如设置Facebook href),还是必须转到每个页面并编辑每个位置的内容?
我有一个DotNetNuke网站,我的主要徽标是使用透明度的PNG文件.我尝试过GIF,但质量不够好.
无论如何它在IE7上工作得很好,但我刚看到我的网站在IE6中,并注意到透明度不适用于我的徽标.
有没有人知道在DotNetNuke门户中快速解决这个问题?
我有一个用VBA(Visual Basic for Applications)编写的Microsoft Word加载项,它将文档及其所有相关内容(嵌入式媒体)压缩为zip存档.创建zip存档后,它将文件转换为字节数组并将其发布到ASMX Web服务.这主要是有效的.
我的主要问题是将大文件传输到网站.我可以成功上传大约40MB的文件,但不能上传140MB的文件(超时/一般故障).
第二个问题是,如果zip存档太大,在VBScript Word加载项中构建字节数组可能会因客户端计算机上的内存不足而失败.
我正在考虑以下选项,我正在寻找有关任一选项或任何其他建议的反馈.
在客户端(MS Word VBA)上打开文件流并一次读取一个"块"并传输到ASMX Web服务,该服务将"块"组装到服务器上的文件中.
这样做的好处是不向应用程序添加任何其他依赖项或组件,我只会修改现有功能.(较少的依赖性更好,因为此解决方案应该在各种服务器环境中工作,并且相对容易设置.)
据我所知,WCF可以通过"分块"或流数据提供传输大文件的问题的解决方案.但是,我对WCF不是很熟悉,并且不确定它究竟能够用于什么,或者我是否可以从VBA与WCF服务进行通信.这有添加另一个依赖项(.NET 3.0)的缺点.但是,如果使用WCF绝对是一个更好的解决方案,我可能不介意采取这种依赖.
dotnetnuke ×3
.net ×1
asmx ×1
caching ×1
javascript ×1
jquery ×1
knockout.js ×1
large-files ×1
module ×1
png ×1
sharpdevelop ×1
transparency ×1
vb.net ×1
vba ×1
wcf ×1