C# 通过客户端对象模型中的代理服务器连接到SharePoint Online

C# 通过客户端对象模型中的代理服务器连接到SharePoint Online,c#,sharepoint,proxy,csom,sharepoint-online,C#,Sharepoint,Proxy,Csom,Sharepoint Online,我有一个桌面应用程序,使用CSOM直接连接到SharePoint Online站点。现在的问题是,该请求必须通过代理服务器发出。到目前为止,我所做的是传递了代理服务器设置,包括ClientContext的ExecutingWebRequest事件的凭据。但是,问题是SharePointOnlineCredentials类。我必须设置ClientContext的凭据。当我将userID和password传递给这个类的构造函数时,它会在内部向SP发出验证凭据的请求。现在,我无法设置/传递代理id/密

我有一个桌面应用程序,使用CSOM直接连接到SharePoint Online站点。现在的问题是,该请求必须通过代理服务器发出。到目前为止,我所做的是传递了代理服务器设置,包括ClientContext的ExecutingWebRequest事件的凭据。但是,问题是SharePointOnlineCredentials类。我必须设置ClientContext的凭据。当我将userID和password传递给这个类的构造函数时,它会在内部向SP发出验证凭据的请求。现在,我无法设置/传递代理id/密码给这个类,这就是为什么代理服务器拒绝我获得IdcrlException的请求。下面是我目前正在使用的示例代码

SecureString passWord = new SecureString();
password.ToList().ForEach(passWord.AppendChar);
SP.ClientContext ctx = new SP.ClientContext(targetURL);

ctx.ExecutingWebRequest += (sen, args) =>
    {
         System.Net.WebProxy myProxy = new System.Net.WebProxy();
         myProxy.Address = new Uri(this.proxyUrl);

         myProxy.Credentials = new System.Net.NetworkCredential(this.proxyUserName, this.proxyPassword);
         args.WebRequestExecutor.WebRequest.Proxy = myProxy;
     };


//This is the line which is causing the issue. 
ctx.Credentials = new SP.SharePointOnlineCredentials(this.userName, passWord);

该代码有望在不需要任何身份验证的代理服务器上成功运行。我无法配置此SharePointOnline凭据。我还尝试使用NetworkCredentials代替SharePointOnlineCredentials。代码已成功编译,但SP正在引发禁止的异常。

是否尝试在web配置文件中设置代理设置? 例如:

  <system.net>
    <defaultProxy>
      <proxy
         usesystemdefault="False"
         proxyaddress="https://MyCompanyName.sharepoint.com/"
         bypassonlocal="True"

         />
    </defaultProxy>
  </system.net>

然后通过设置要连接的用户名在代码中重写

此外,我也很难跟踪导致您崩溃的代码行:
ctx.Crednetials=新的SP.SharePointOnlineCredentials(this.userName,passWord)

@Andrew这是实际的代码片段。我刚刚添加了注释以突出显示导致异常的行。这是应用程序内部尝试建立连接以验证userId&pwd的线路。这是一个一次性的特性,因为从今以后,无论我请求什么,都不会对我的请求进行验证。问题是,我无法将代理设置传递给SharePointOnlineCredentials类,因为它正试图在构造函数中建立conn。我还必须说,该应用程序是一个桌面应用程序。