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

时间:2014-07-01 09:55:33

标签: c# sharepoint proxy csom sharepoint-online

我有桌面应用程序,我使用CSOM直接连接到SharePoint Online网站。现在的问题是该请求必须通过代理服务器进行。到目前为止我所做的是我已经传递了代理服务器设置,包括ClientContext的ExecutingWebRequest事件的凭据。但是,问题是SharePointOnlineCredentials类。我必须设置ClientContext的凭据。当我传递userID&密码到此类的构造函数,它在内部向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);

代码可以在不需要任何身份验证的代理服务器上成功运行。这是我无法配置的SharePointOnlineCredentials。我还尝试使用NetworkCredentials代替SharePointOnlineCredentials。代码编译成功但SP正在抛出Forbidden异常。

1 个答案:

答案 0 :(得分:1)

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

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

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

然后通过设置要连接的用户名覆盖代码。

此外,我遇到困难,因为代码行崩溃了:       ctx.Crednetials = new SP.SharePointOnlineCredentials(this.userName,passWord);