我正在开发一个Timer Job,它必须使用指定的属性值搜索所有SharePoint内容。如果此属性包含引号,则请求失败,否则没有此特性,everthing将按预期工作。我试图用反引号(`)替换引号,但这仅适用于应用程序控制台。
KQL查询示例:
ThematiqueEnrichment="Vie de l'administration" --> fail
ThematiqueEnrichment="toto" --> works
有人对这个问题有所了解吗?以及为什么反引用不仅仅适用于计时器作业
感谢您的帮助
KeywordQuery kq = new KeywordQuery(_site);
kq.QueryText = "ContentTypeId:0x01010006DC43FAAA7D45E8AF6C31AE603C9BA5006CFA76F0311643E58860A89C066A5C6F*) AND ThematiqueEnrichment=\"" + currentSource.DisplayName + "\" ";
kq.SelectProperties.Clear();
kq.SelectProperties.Add("PublishingPageContentOWSHTML");
kq.SelectProperties.Add("EMSTotemsDatePublicationOWSDATEFormat");
kq.SortList.Add("EMSTotemsDatePublicationOWSDATEFormat", SortDirection.Descending);
ResultTableCollection resultTableCollection = new SearchExecutor().ExecuteQuery(kq);
ResultTable resultTable = resultTableCollection.Filter("TableType", KnownTableTypes.RelevantResults).FirstOrDefault();
if (resultTable != null)
{
foreach (DataRow row in resultTable.Table.Rows)
{
// Manage items
}
}
答案 0 :(得分:0)
我找到了解决方案。我有一个带有法语语言包的英语SharePoint。 所以我需要用法语设置我的cultureInfo以允许Query管理报价。
在我的控制台中,文化用法语和英语定时器工作。这解释了为什么竞争不同。
KeywordQuery kq = new KeywordQuery(_site);
kq.QueryText = "ContentTypeId:0x01010006DC43FAAA7D45E8AF6C31AE603C9BA5006CFA76F0311643E58860A89C066A5C6F*) AND ThematiqueEnrichment=\"" + currentSource.DisplayName + "\" ";
kq.SelectProperties.Clear();
kq.Culture = new CultureInfo("fr-FR");