C# 从.NET核心应用程序(bot框架版本4)访问Sharepoint文档
我正在使用C#(.NETCore)和BotFrameworkV4开发一个Bot服务。我是Bot框架的初学者 问题陈述如下: -在每封邮件的结尾都竖起大拇指,竖起大拇指,以示反馈。 -当用户向下单击时,从Sharepoint获取相关文档。 -在聊天窗口中将提取的文档列表显示为旋转木马 我可以使用3.NETSDK版本来实现这一点。但是,我在框架的第4版中复制它时遇到了问题-我们没有可用于.NET Core的SharePoint CSOm NuGet包。因此,按照中的建议添加了DLLC# 从.NET核心应用程序(bot框架版本4)访问Sharepoint文档,c#,.net-core,botframework,C#,.net Core,Botframework,我正在使用C#(.NETCore)和BotFrameworkV4开发一个Bot服务。我是Bot框架的初学者 问题陈述如下: -在每封邮件的结尾都竖起大拇指,竖起大拇指,以示反馈。 -当用户向下单击时,从Sharepoint获取相关文档。 -在聊天窗口中将提取的文档列表显示为旋转木马 我可以使用3.NETSDK版本来实现这一点。但是,我在框架的第4版中复制它时遇到了问题-我们没有可用于.NET Core的SharePoint CSOm NuGet包。因此,按照中的建议添加了DLL 公共静态异步任务
公共静态异步任务SearchContent(字符串queryText,short resultCount)
{
列表搜索结果=新列表();
string SiteUrl=“https:--”;
尝试
{
使用(ClientContext=newclientcontext(SiteUrl))
{
//AccessPolicyEntry ape=GetAccessPolicys();
if(SpUserName==string.Empty | | SpUserPass==string.Empty)
{
等待GetKeyVaultSecret();
}
SecureString securePassword=GetSecureString(SpUserPass);
Credentials=新的SharePointOnlineCredentials(SpUserName、securePassword);
关键字查询关键字查询=新关键字查询(clientContext);
keywordQuery.RowLimit=5;
关键字query.SummaryLength=3000;
keywordQuery.QueryText=QueryText+“站点:\”https://----/Deploy\"";
SearchExecutor SearchExecutor=新的SearchExecutor(clientContext);
ClientResult results=searchExecutor.ExecuteQuery(关键字查询);
clientContext.ExecuteQuery();
短计数器=0;
foreach(results.Value[0].ResultRow中的变量oResultRow)
{
如果(计数器<结果计数)
{
计数器++;
字符串optimizeSummary=OptimizeContent(queryText,oResultRow[“HighlightedSummary”].ToString());
searchResult.Add(新的SearchContent(){Title=oResultRow[“Title”].ToString(),summy=optimizeSummary,Path=oResultRow[“Path”].ToString()});
}
其他的
{
打破
}
}
}
}
捕获(例外情况除外)
{
searchResult=null;
LogException(例如,“SharePointSearchService.SearchContent”);
}
返回搜索结果;
}
使用Microsoft.SharePoint.Client.Runtime.Portable.dll
而不是Microsoft.SharePoint.Client.Runtime.Windows.dll
。在SharePoint CSOM项目中,您必须始终同时拥有客户端
和客户端.Runtime
程序集(它们应该匹配)。看看这篇文章,这个问题似乎是可以解决的。但是,这里没有可用的代码段;现在情况如何?你有例外吗?我没有看到任何实际的错误或问题。此外,我认为他应该使用Microsoft.SharePoint.Client.Runtime.Portable.dll,而不是Microsoft.SharePoint.Client.Runtime.Windows.dll。在SharePoint CSOM项目中,您必须始终同时拥有客户端和客户端.Runtime程序集(它们应该匹配)。我认为您是对的@DanaV,更改dll很有帮助!!谢谢你。我会给出一个真实的答案。请将其标记为答案,以便将来对其他人有所帮助。
public static async Task<List<SearchContent>> SearchContent(string queryText, short resultCount)
{
List<SearchContent> searchResult = new List<SearchContent>();
string SiteUrl = "https:--";
try
{
using (ClientContext clientContext = new ClientContext(SiteUrl))
{
// AccessPolicyEntry ape= getAccessPolicies();
if (SpUserName == string.Empty || SpUserPass == string.Empty)
{
await GetKeyVaultSecret();
}
SecureString securePassword = GetSecureString(SpUserPass);
clientContext.Credentials = new SharePointOnlineCredentials(SpUserName, securePassword);
KeywordQuery keywordQuery = new KeywordQuery(clientContext);
keywordQuery.RowLimit = 5;
keywordQuery.SummaryLength = 3000;
keywordQuery.QueryText = queryText + " site:\"https://----/Deploy\"";
SearchExecutor searchExecutor = new SearchExecutor(clientContext);
ClientResult<ResultTableCollection> results = searchExecutor.ExecuteQuery(keywordQuery);
clientContext.ExecuteQuery();
short counter = 0;
foreach (var oResultRow in results.Value[0].ResultRows)
{
if (counter < resultCount)
{
counter++;
string optimizeSummary = OptimizeContent(queryText, oResultRow["HitHighlightedSummary"].ToString());
searchResult.Add(new SearchContent() { Title = oResultRow["Title"].ToString(), Summery = optimizeSummary, Path = oResultRow["Path"].ToString() });
}
else
{
break;
}
}
}
}
catch (Exception ex)
{
searchResult = null;
ExceptionUtility.LogException(ex, "SharePointSearchService.SearchContent");
}
return searchResult;
}