在VS 2013中,当我右键单击解决方案资源管理器并转到Add > View...整个IDE锁定很长时间 - 大约20秒.在这段时间之后,最后会出现"添加视图"对话框,一切都恢复正常.
为什么会这样?这是一个如此简单的对话.我想要做的就是添加一个空视图,它本质上是一个空文本文件.
我怎样才能加快速度?
nb值得注意的是,我有一台带有快速SSD的快速计算机.VS中的大多数操作非常非常快 - 它就是这个对话框.
我有一个输入框,就像一个搜索(类似于Facebook).我在按键事件上使用jquery工作正常.问题是我无法使用箭头键向下滚动结果集,每次按下其中一个结果时,搜索结果将被重新生成.那么可以忽略箭头键/ shift/tab等.
$("#search-form .search-terms").on("keypress", function(){
$("#search-items #autocom").fadeIn();
});
Run Code Online (Sandbox Code Playgroud)
谢谢
我有一个由许多其他Web应用程序项目引用的类库.它有许多app.config我希望在所有引用Web项目中使用的设置.构建类库时,它会将其复制app.config到自己的bin文件夹中<assembly.name>.dll.config.
<assembly.name>.dll.config其复制到每个引用Web应用程序项目的bin文件夹中?Copy to Output Directory或Build Action(以任何组合)不起作用.暂且不说:在每个Web应用程序项目中手动放置所有这些配置是不切实际的.我可以通过<assembly.name>.dll.config在bin文件夹中查找来读取文件,并从那里提取设置.我已经可以做到这一点,所以这不是问题 - 我只需要确保文件将在那里阅读
我正在使用Sitecore发布API运行我的Sitecore主数据库的计划发布.我在一天中按计划的时间间隔调用一个Web服务,它运行以下代码(为了便于阅读,略微精简):
// grab the root content node from sitecore
Item contentNode = dbSource.Items[ID.Parse("{0DE95AE4-41AB-4D01-9EB0-67441B7C2450}")];
PublishOptions options = new PublishOptions(sourceDatabase, targetDatabase, PublishMode.Smart, lang, DateTime.Now);
options.RootItem = contentNode;
options.Deep = true;
Publisher p = new Publisher(options);
p.PublishAsync();
Run Code Online (Sandbox Code Playgroud)
当我们运行上面的代码时,它会发布内容节点中的所有内容,包括所有后代,而不管工作流状态如何.这就像它完全忽略了工作流程.这不是我们所追求的,并且在我们的实时网站上造成了很多问题.
如果我们从Sitecore Desktop中运行相同的操作,它会发布内容节点中的所有内容,包括可发布的所有后代(即最终工作流阶段).它不会在树中发布仍处于草稿模式的任何项目.这是必需的行为.
我已经尝试通过使用以下using语句包含上面的代码来将代码实现为非管理员用户:
string userName = @"sitecore\******";
Sitecore.Security.Accounts.User user = Sitecore.Security.Accounts.User.FromName(userName, true);
user.RuntimeSettings.IsAdministrator = false;
using (new Sitecore.Security.Accounts.UserSwitcher(user))
{
...
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这没有任何效果.
有没有明显的我错过了,或者我做得对,Sitecore做错了吗?有人可以帮忙吗?
我注意到的一个奇怪的事情是,在实时数据库中查看时发布的草稿项目在字段或元数据方面在Sitecore Desktop中绝对没有显示.他们还发出警告说"当前项目中没有"英语:英语"的版本.
我试图通过iisspeed.com使用" 用于Microsoft IIS的Brotli压缩模块 "在IIS中使用新的Brotli压缩方案.
如果我将<httpCompression>配置部分更改applicationHost.config为仅具有Brotli模块,则Brotli压缩模块本身可以正常工作.
iisspeed.com上的文档说这样做:
<httpCompression directory="path\to\temp\folder" minFileSizeForComp="50">
<scheme name="br" dll="path\to\iisbrotli.dll" />
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
...
</httpCompression>
Run Code Online (Sandbox Code Playgroud)
但是我发现这不起作用.
浏览器(本例中为Chrome)发送以下accept-encoding标头:
accept-encoding: gzip, deflate, sdch, br
这意味着浏览器可以接受Brotli编码br以及gzip.我希望IIS更喜欢br,gzip但似乎没有办法优先<scheme>配置配置中的每个元素.我已经尝试更改.config文件中的顺序,但它没有任何效果.
IIS总是使用gzip即使br受支持也是首选,因为它的文件较小.
我已经搜索谷歌,发现IIS 6中的每个压缩方案都有一个优先级设置,但似乎已经在IIS7 +中删除了.
它被调用HcPriority并进入IIS6配置数据库XML文件.
请参阅以下链接:
https://msdn.microsoft.com/en-us/library/ms525366(v=vs.90).aspx
https://blogs.iis.net/ksingla/changes-to-compression-in-iis7
https://forums.iis.net/t/1150520.aspx
br了gzip,如果客户接受呢?我认识到这是网络数据库上的一个有争议的问题,所以这个问题适用于主数据库...
我在Sitecore 6.4.1中设置了自定义索引,如下所示:
<index id="search_content_US" type="Sitecore.Search.Index, Sitecore.Kernel">
<param desc="name">$(id)</param>
<param desc="folder">_search_content_US</param>
<Analyzer ref="search/analyzer" />
<locations hint="list:AddCrawler">
<search_content_home type="Sitecore.Search.Crawlers.DatabaseCrawler, Sitecore.Kernel">
<Database>master</Database>
<Root>/sitecore/content/usa home</Root>
<Tags>home content</Tags>
</search_content_home>
</locations>
</index>
Run Code Online (Sandbox Code Playgroud)
我像这样查询索引(我在SortableIndexSearchContext这个答案中使用了techphoria414 :如何使用新的Sitecore.Search API进行排序/过滤):
private SearchHits GetSearchResults(SortableIndexSearchContext searchContext, string searchTerm)
{
CombinedQuery query = new CombinedQuery();
query.Add(new FullTextQuery(searchTerm), QueryOccurance.Must);
return searchContext.Search(query, Sort.RELEVANCE);
}
...
SearchHits hits = GetSearchResults(searchContext, searchTerm);
Run Code Online (Sandbox Code Playgroud)
hits是我索引中搜索命中的集合.当我迭代时,hits我可以看到Sitecore中有相同项目的许多重复项,每个版本的项目有1个.
然后,我执行以下操作以获得SearchResultCollection:
SearchResultCollection results = hits.FetchResults(0, hits.Length);
Run Code Online (Sandbox Code Playgroud)
这将所有重复项组合到一个SearchResult对象中.此对象表示特定项目的1个版本,并且具有一个名为的属性,该属性SubResults是SearchResult表示所有其他项目版本的s 的集合.
这是我的问题: …
我有一些代码可以response并行处理我的数据库中的许多对象(使用AsParallel()).每个response都有很多components.该responses可以共享相同的组件.我对component数据进行了一些修改并将其保存到db中,因此我需要防止多个线程同时处理同一个component对象.
我使用锁来实现这一目标.我有一个ConcurrentDictionary<int, object>可以容纳所有必要的锁定对象.像这样:
private static ConcurrentDictionary<int, object> compLocks = new ConcurrentDictionary<int, object>();
var compIds = db.components.Select(c => c.component_id).ToList();
foreach (var compId in compIds)
{
compLocks[compId] = new object();
}
Run Code Online (Sandbox Code Playgroud)
然后我会这样做:
responses.AsParallel().ForAll(r =>
{
... do some time consuming stuff with web services ...
// this is a *just in case* addition,
// in case a new component was added to
// the db since …Run Code Online (Sandbox Code Playgroud) 这看起来很简单,我确信我必须忽略一些东西.我无法确定如何在Lucene中执行以下操作:
NameLucene.Net.Analysis.Standard.StandardAnalyzerTOKENIZEDName包含1个空格的值:halong bay.ha long bay代替halong bay.halong bay我会受到打击.ha long bay我不会受到打击.这是我用来从Sitecore使用LINQ to Lucene构建我的谓词的代码:
var searchContext = ContentSearchManager.GetIndex("my_index").CreateSearchContext();
var term = "ha long bay";
var predicate = PredicateBuilder.Create<MySearchResultItemClass>(sri => sri.Name == term);
var results = searchContext.GetQueryable<MySearchResultItemClass>().Where(predicate);
Run Code Online (Sandbox Code Playgroud)
我还尝试使用.Like()扩展模糊匹配:
var predicate = PredicateBuilder.Create<MySearchResultItemClass>(sri => sri.Like(term));
Run Code Online (Sandbox Code Playgroud)
这也没有结果ha long bay.
如何在Sitecore中配置Lucene以返回两者halong bay和ha long bay搜索项的命中 …
我有一个带有变量的发布管道,但似乎没有任何方法可以将该变量的值设置为在发布时评估的值。例如另一个变量。
这是一个真实的例子:
我想做的就是将 的值设置MyExpressionBasedVariable为 的值MyOtherVariable。
所有在线文档和示例似乎都表明这是可能的,但我无法让它发挥作用。我总是以文字字符串而不是计算值结束。
我尝试过使用这些不同的语法:
$(MyOtherVariable)$[variables['MyOtherVariable']]${{variables['MyOtherVariable']}}我已经看到您可以定义自定义任务来将变量名称设置为管道的一部分,但这似乎太过分了。
本质上,我想做的就是将密钥保管库机密重命名为不同的变量名称,以便在配置文件中进行基于约定的 XML 变量替换。
例如,我有一个名为 的秘密this-is-a-secret-name-which-is-a-different-naming-convention-to-my-connectionstrings,但我需要它在一个名为 的变量中MySecret-ConnectionString。
azure-keyvault azure-devops azure-pipelines azure-pipelines-release-pipeline
如果我在Sitecore桌面的整个内容树上单击"发布",我将获得对话,告诉我已处理了多少项.有时我知道这个操作需要很长时间(例如一个小时).没有办法阻止这个过程.当然,我可以关闭对话并继续使用Sitecore,但发布仍在后台进行.在完成之前我不能发布任何其他内容.
回收应用程序池会终止发布,但对于在Sitecore中工作的用户来说,这是非常具有破坏性的.
是否有可能以编程方式或以其他方式杀死发布操作而不回收应用程序池?
在我的内容树中,我有包含子项的项目.子项是父项的内容所在的位置.
例如
Article container <---- only this item is navigable to the user
|
|- Text block = "foo foo foo foo"
|- Image = "foo.jpg"
|- Text block = "foo foo foo"
Run Code Online (Sandbox Code Playgroud)
当用户浏览我的网站时,他们永远不会找到任何子项的链接.他们只会访问"文章容器"的网址,其中包含所有子项目都显示在页面上的演示文稿.
在常规索引方案中,所有3个子项都将匹配查询"foo"并在结果中返回.我想创建一个纯粹用于网站搜索的Sitecore 7索引,它将返回术语"foo"的搜索查询的父项("文章容器").我不希望在查询结果中返回任何子项.
这可能与计算字段,入站或出站索引过滤器(或我还没有听说过的其他内容)的某些组合有关吗?
或者我是否必须先解析输出并解析父项,然后再将其显示给用户?
编辑
@martindavies的答案很好,但我想知道是否有办法在索引"上游"进行索引子项目并将其内容存储在索引中的父项目中,而不是"索引父项"的"下游"并将所有子内容存储在父级索引条目中.这样做的原因是,对子项的任何编辑都将自动重新编制索引,而无需手动触发父文章的重新索引.
c# ×7
sitecore ×5
indexing ×2
lucene ×2
.net ×1
app-config ×1
azure-devops ×1
azure-pipelines-release-pipeline ×1
brotli ×1
dialog ×1
dictionary ×1
gzip ×1
html ×1
http-headers ×1
iis ×1
jquery ×1
jquery-ui ×1
linq ×1
locking ×1
msbuild ×1
publish ×1
publishing ×1
search ×1
sitecore6 ×1
sitecore7 ×1