首页 > 解决方案 > 使用 .NET Core 3.1 使用 Sharepoint 在线 CSOM (REST API) 操作并将其公开在 OData 控制器中

问题描述

我是sharepoint CSOM的新手,

环境:Net core 3.1、SharePoint、

包:Microsoft.SharePointOnline.CSOM(16.1.20912.12000)、System.IndentityModel.Tokens.JWT(6.8.0)

我想根据参数中给出的关键字“accountName”从 sharePoint 获取用户列表,并将此结果公开在 OData 控制器中。

我有一个共享点方法的服务,这里是实现:

    public ClientContext GetContext(Uri site, string user, SecureString password)
    {
        using (var authenticationManager = new AuthenticationManager())
        {
           return authenticationManager.GetContext(site, user, password);
        }
    }

    public void GetUsersFromSharePoint(string accountName)
    {
        Uri site = new Uri(_configuration["SharePointConfiguration:WebSiteUrl"]);
        string user = _configuration["SharePointConfiguration:Login"];
        string rawPassword = _configuration["SharePointConfiguration:Password"];

        SecureString password = new SecureString();
        foreach (char c in rawPassword) password.AppendChar(c);

        using (var context = GetContext(site, user,password))
        {
            var users = context.LoadQuery(context.Web.SiteUsers.Where(u => u.LoginName.ToLower().Contains(accountName.ToLower() && u.PrincipalType == PrincipalType.User && u.UserId.NameIdIssuer == "urn:federation:microsoftonline")));
            context.ExecuteQuery();
        }
    }

这是我的控制器:

[ApiVersion("1.0")]
[ODataRoutePrefix("SharePoint")]
[ApiExplorerSettings(IgnoreApi = false)]
[EnableCors("onBookingPolicy")]
public class SharePointController : ODataController
{
    private readonly ISharePointService _sharePointService;
    public SharePointController(ISharePointService sharePointService)
    {
        _sharePointService = sharePointService;
    }


}

我想知道该过程是否可以很好地获得预期结果以及如何以 json 格式呈现此结果以将其公开在我的 OData 控制器中

先感谢您。

标签: c#.netasp.net-coresharepointodata

解决方案


推荐阅读