System.Net.Sockets.SocketException: '一个现有的连接被远程主机强行关闭'与 SharePoint Online 低信任身份验证

Lib*_*n M 0 sharepoint oauth acs sharepoint-online azure-cloud-services

我们正在使用 Oauth 在 Azure 中使用 SharePoint Online 对我们的云服务进行身份验证 - https://docs.microsoft.com/en-us/sharepoint/dev/sp-add-ins/three-authorization-systems-for-sharepoint-add -ins#low-trust并且我们收到此错误 - System.Net.Sockets.SocketException: '现有连接被远程主机强行关闭'

尝试下面的 clientContext.ExecuteQuery() 代码时。

Microsoft.SharePoint.Client.User spUser = null;
            try
            {
                using (clientContext)
                {
                    if (clientContext != null)
                    {
                        spUser = clientContext.Web.CurrentUser;

                        clientContext.Load(spUser);
                        clientContext.ExecuteQuery();

                        return spUser.LoginName.Split('|')[2];
                    }
                }
                return string.Empty;//no context = no id
            }
Run Code Online (Sandbox Code Playgroud)

这是 SharePoint 上下文的样子

知道这个问题可能是什么或如何解决这个问题吗?谢谢

Lib*_*n M 5

所以添加这个解决了这个问题:

using System.Net;
using System.Security.Authentication;
Run Code Online (Sandbox Code Playgroud)

在 clientContext.ExecuteQuery(); 之前添加以下代码;

const SslProtocols _Tls12 = (SslProtocols)0x00000C00;
            const SecurityProtocolType Tls12 = (SecurityProtocolType)_Tls12;
            ServicePointManager.SecurityProtocol = Tls12;
Run Code Online (Sandbox Code Playgroud)

潜在的问题似乎是我们使用的是 .net framework 4.5,我们必须将其升级到最新版本才能消除此错误。

这里有更多解释-无法从传输连接读取数据:远程主机强制关闭现有连接

.NET 4.5 中的默认安全协议