siteserver / cms

SS CMS 基于 .NET Core,能够以最低的成本、最少的人力投入在最短的时间内架设一个功能齐全、性能优异、规模庞大并易于维护的网站平台。
https://sscms.com
GNU Affero General Public License v3.0
3.67k stars 1.21k forks source link

生成栏目多选栏目 缓存造成只能生成第一个栏目 #95

Open stuyun opened 7 years ago

stuyun commented 7 years ago

SiteServer.BackgroundPages.Cms.PageCreateChannel 类CreateNodeButton_OnClick 方法中 guid 导致缓存一样 foreach (var nodeId in nodeIdList) { CreateManager.CreateChannel(PublishmentSystemId,nodeId ,guid); } 修改成 foreach (var nodeId in nodeIdList) { CreateManager.CreateChannel(PublishmentSystemId, nodeId, StringUtils.GetShortGuid()); }

kingter520 commented 7 years ago

按照你的方法修改之后还是不行,生成的也还是第一个栏目的内容

stuyun commented 7 years ago

不会呀 我这边都是可以的你是最新版本吗? 生成栏目一直是第一个栏目的原因就是缓存的问题 缓存不变化的问题就是guid 没有改变的问题所以 CreateManager.CreateChannel(PublishmentSystemId, nodeId, StringUtils.GetShortGuid()); 应该是可以的呀

kingter520 commented 7 years ago

我下载的是昨天的dev版本,改成这个也不行,生成多个栏目时所有的栏目列表显示的都是第一个栏目的内容

stuyun commented 7 years ago

那你好好打断点看一下 guid 的变化 创建添加到任务的时候 CreateNodeButton_OnClick

stuyun commented 7 years ago

这个就是导致栏目无法生成的问题 只能生成第一个栏目 最新bug cms/source/SiteServer.CMS/StlParser/Cache/StlCacheUtils.cs 缓存方法名称改变 导致 guid 没有组合到缓存键值中 不知道是不是官方故意搞得名堂 $"SiteServer.CMS.StlParser.Cache.{nameofClass}.{nameofMethod}.{guid}"; 修改成这样就可以了