在Sharepoint 201上管理CSOM。无法创建SSL / TLS安全通道

时间:2017-10-17 08:46:08

标签: ssl sharepoint-2013 csom

我有一个Windows Server 2016 VM和Visual Studio 2017社区版。我正在编写一个简单的脚本来检查与Sharepoint 2013的连接.Browpoint Server没有安装在VM上,它位于Intranet中的某个位置。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.SharePoint.Client;
using System.Security;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string siteUrl = "https://xxx.yyy.org:443";
            ClientContext clientContext = new ClientContext(siteUrl);

            Web site = clientContext.Web;
            List documents = site.Lists.GetByTitle("Documents");

            //Prepare the request
            clientContext.Load(site);

            //Submit the Request
            clientContext.ExecuteQuery();

            Console.ReadKey();
        }
    }
}

但我得到了这个例外:

  

发生了System.Net.WebException

     
    

的HResult = 0x80131509
    消息=请求已中止:无法创建SSL / TLS安全通道。
    来源=系统
    StackTrace:

         
      

at System.Net.HttpWebRequest.GetResponse()
      在Microsoft.SharePoint.Client.SPWebRequestExecutor.Execute()
      在Microsoft.SharePoint.Client.ClientContext.GetFormDigestInfoPrivate()
      在Microsoft.SharePoint.Client.ClientContext.EnsureFormDigest()
      在Microsoft.SharePoint.Client.ClientContext.ExecuteQuery()
      在C:\ Users \ AdminDD \ source \ repos \ ConsoleApp1 \ ConsoleApp1 \ Program.cs:line

中的ConsoleApp1.Program.Main(String [] args)     
  

我已阅读此thread并通过IE登录。浏览器的证书似乎有效,问题仍然存在。有没有关于如何解决这个问题的建议?

2 个答案:

答案 0 :(得分:1)

我有完全相同的问题。 检查您的项目.Net版本。从4.5 - >升级后它起作用了吗? 4.6

答案 1 :(得分:0)

您应该仅对网址https://yoursite/的绝对网址进行请求,仅此而已

$response = Invoke-WebRequest -Verbose -URI $anUrl -CertificateThumbprint $CertificateThumbprint -UseDefaultCredentials -SessionVariable websession -ErrorAction:Stop

以响应方式获取cookie身份验证,然后将其添加到您的csom查询中

$request.ClientCertificates.Add($global:cert)

$request.CookieContainer = New-Object System.Net.CookieContainer

$c3 = New-Object System.Net.Cookie($global:cookieName3, $global:cookieVal3, "/", $global:cookieDomaine);

$request.CookieContainer.Add($c3);

here is a working sample