用ExecuteQuery()访问sharepoint link时,提示Identity Client Runtime Library (IDCRL) could not look up the realm information for a federated sign-in.

骏 高 1 信誉分
2025-09-18T03:46:27.0833333+00:00

我使用C#编写了一段访问sharepoint的代码:

访问sharepoint时,指定Office365账号和密码

这个问题比较着急,希望能2025/9/18回复。谢谢。

具体如下:

using Microsoft.SharePoint.Client;

using System;

using (ClientContext context = new ClientContext(Site)

            {

                try

                {

                    // 初始化保存账号密码的变量并保存密码

                    var securePassword = new System.Security.SecureString();

                    foreach (char c in password)

                    {

                        securePassword.AppendChar(c);

                    }

                    // 通过API生成访问sharepoint的凭据

                    context.Credentials = new SharePointOnlineCredentials(userName, securePassword);

                    Web web = context.Web;

                    context.Load(web);

                    context.ExecuteQuery();  -》这里执行时报错。参考程序执行时的错误内容

                }

                catch (Exception ex)

                {

                    CommonUtils.Log(clazzName + ": checkStandardFileLinkAccessToVisit():Error :" + ex.Message);

                    Console.WriteLine(ex.Message);

                    return false;

                }

            }

程序执行时的错误内容:

Identity Client Runtime Library (IDCRL) could not look up the realm information for a federated sign-in.

希望回复的内容:

  1. 以上代码执行时出错的原因是什么?
  2. 如何解决?使代码可以成功访问sharepoint link?
Microsoft 365 和 Office | SharePoint | 商业版 | Windows
0 个注释 无注释

2 个答案

排序依据: 非常有帮助
  1. Jayden-P 26,280 信誉分 Microsoft 外部员工 审查方
    2025-09-18T07:10:24.29+00:00

    您好 骏 高

    感谢您在 Microsoft 问答论坛中提问。

    此回复已自动翻译,因此可能存在语法错误或奇怪的表达。

    根据我的研究,SharePointOnlineCredentials 支持 Kerberos、Ntlm 和基本身份验证。因此,在基本支持终止后(2025 年 3 月结束),它将无法与 SharePoint Online 兼容。

    对于 SharePoint Online,您应该切换到访问令牌。

    使用访问令牌,您可以调用 Azure AD 获取令牌。如果您需要用户令牌,则可以使用 Web 浏览器登录 AD 并获取令牌。您还可以使用应用程序客户端 ID 和密钥(称为密码流)以应用程序(而非用户)身份登录,而无需使用浏览器。

    使用 CSOM for .NET Standard 替代 CSOM for .NET Framework | Microsoft Learn

    请尝试并告诉我它是否对您有用。


    如果答案对您有帮助,请点击“接受答案”并点赞。如果您对此答案还有其他疑问,请点击“评论”。

    注意:如果您想接收此主题的相关电子邮件通知,请按照我们“文档”中的步骤启用电子邮件通知。

    此答案是否有帮助?

    1 个人认为此答案很有帮助。

  2. davidw 15,960 信誉分
    2025-09-18T07:22:41.5666667+00:00

    是控制台程序?MS Learn sample里是调用 await context.ExecuteQueryAsync();

    仅供参考。

    此答案是否有帮助?

    0 个注释 无注释

你的答案

提问者可以将答案标记为“已接受”,审查方可以将答案标记为“已推荐”,这有助于用户了解答案是否解决了提问者的问题。