C# 从.NET核心应用程序(bot框架版本4)访问Sharepoint文档

C# 从.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 公共静态异步任务

我正在使用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;

    }