为什么带有 SharePointOnline CSOM 的 .NET Core 2.2 API 会抛出"The process has no package identity"?



我在Windows Server 2012 R2数据中心机器上的IIS上运行了一个.NET Core 2.2 API。它使用 Nuget 包 Microsoft.SharePointOnline.CSOM 中的 DLL。但是它在调用方法 ClientContext.ExecuteQueryAsync() 时会引发异常One or more errors occurred. (The process has no package identity. (Exception from HRESULT: 0x80073D54))

我遵循了以下指南:https://rajujoseph.com/getting-net-core-and-sharepoint-csom-play-nice/.我尝试了两种解决方案。第一个是创建一个 .NET Core 控制台解决方案,该解决方案调用包含 SharePoint CSOM 代码的 DLL。然后,我尝试从Windows Server 2012 R2数据中心计算机上的IIS上运行的.NET Core 2.2 API调用DLL。但是这两种解决方案都抛出了与上述相同的异常One or more errors occurred. (The process has no package identity. (Exception from HRESULT: 0x80073D54))

SharePointHelper.dll代码:

using Microsoft.SharePoint.Client;
using System;
using System.Collections.Generic;
using System.Text;
namespace SharePointHelper
{
  public class SharePointHelper
  {
    public SharePointHelper() { }
    public void WriteFilesAndFolders(string siteUrl, string listName, string username, string password)
    {
      using (var context = new ClientContext(siteUrl))
      {
        context.Credentials = new SharePointOnlineCredentials(username, password);
        var folder = context.Web.GetFolderByServerRelativeUrl(listName);
        var subFolders = folder.Folders;
        var files = folder.Files;
        context.Load(folder);
        context.Load(subFolders);
        context.Load(files);
        if (context.HasPendingRequest)
          context.ExecuteQueryAsync().Wait();
        var subFolderEnumorator = subFolders.GetEnumerator();
        var filesEnumerator = files.GetEnumerator();
        PrintValues(subFolderEnumorator);
        PrintValues(filesEnumerator);
      }
    }
    private void PrintValues(IEnumerator<Folder> enumerator)
    {
      while (enumerator.MoveNext())
        Console.WriteLine(enumerator.Current.Name);
    }
    private void PrintValues(IEnumerator<File> enumerator)
    {
      while (enumerator.MoveNext())
        Console.WriteLine(enumerator.Current.Name);
    }
  }
}

在 SharePointHelper.dll 中调用该方法的 .NET Core 2.2 服务代码:

public void SharePointTest()
    {
      string siteUrl = @"https://somecompany.sharepoint.com/sites/Test";
      string listName = "Documents";
      string username = "myemail@somecompany.com";
      string password = "mypassword";
      var sharePointHelper = new SharePointHelper.SharePointHelper();
      sharePointHelper.WriteFilesAndFolders(siteUrl, listName, username, password);
    }

我希望 SharePointHelper.dll 能够连接并从 SharePoint 获得响应。但是抛出异常One or more errors occurred. (The process has no package identity. (Exception from HRESULT: 0x80073D54))

您可以通过简单地安装 TTCUE.NetCore.SharepointOnline.CSOM Nuget 包来解决此问题以将 SharePoint 与 .NET Core 一起使用。除非您想深入了解如何执行解决方法,否则没有理由遵循链接指南。

相关内容