Sharepoint 2010客户端对象模型通过HTTPS进行远程访问

时间:2010-06-30 21:54:08

标签: https silverlight-4.0 sharepoint-2010 wcf-client

我被鼓励了解到,Sharepoint 2010客户端对象模型实际上是对服务器进行远程调用。因此,我将Microsoft.Sharepoint.Client.Silverlight.dll和Microsoft.Sharepoint.Client.Silverlight.Runtime.dll从我的Sharepoint 2010服务器复制到我的开发机器(没有Sharepoint)。我假设我在Sharepoint 2010服务器上测试的Silverlight代码也适用于我的开发机器。当然,我不使用“ApplicationContext.Current.Url”,因为我没有在Sharepoint中执行,所以我手动添加sharepoint服务器名称,如下所示(对帖子保持匿名):

        //ClientContext context = new ClientContext(ApplicationContext.Current.Url);
        ClientContext context = new ClientContext("https://[servername]");
        _web = context.Web;
        context.Load(_web);
        context.Load(_web.Lists);
        context.ExecuteQueryAsync(new ClientRequestSucceededEventHandler  (OnRequestSucceeded), new ClientRequestFailedEventHandler(OnRequestFailed));

当我执行代码时,我会被Windows身份验证窗口(Sharepoint配置为使用Windows身份验证)提示,我添加了我的域/用户和密码。但是,我收到以下错误:

注意:通过更改绑定安全模式=“Transport”并在Sharepoint根网站上包含clientAccessPolicy.xml文件,我能够在给出类似错误的情况下使Sharepoint 2010 Web服务正常工作。我是否需要为客户端对象模型端点配置另一个Sharepoint目录?

  • 异常{System.Security.SecurityException ---> System.Security.SecurityException:安全性错误。 在System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult) 在System.Net.Browser.BrowserHttpWebRequest。<> c__DisplayClass5.b__4(Object sendState) 在System.Net.Browser.AsyncHelper。<> c__DisplayClass2.b__0(Object sendState) ---内部异常堆栈跟踪结束--- 在System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod,Object state) 在System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult) 在Microsoft.SharePoint.Client.ClientRequest.ExecuteQueryGetResponseAsyncCallback(IAsyncResult asyncResult)} System.Exception {System.Security.SecurityException}

2 个答案:

答案 0 :(得分:1)

请查看以下博客文章,您需要在sharepoint网站根文件夹中添加 clientaccesspolicy.xml 文件。

http://vangalvenkat.blogspot.com/2011/08/sharepoint-2010-getting-list-item.html

答案 1 :(得分:0)

啊,啊,我找到了。您可以在客户端上下文中设置安全性以使用默认的Windows身份验证,如下所示:

using (Microsoft.Sharepoint.Client.ClientContext ctx = new Microsoft.Sharepoint.Client.ClientContext("http://sharepointserver")){

ctx.AuthenticationMode = Microsoft.Sharepoint.Client.ClientAuthenticationMode.Default

} 

这也应该可以防止任何Windows身份验证弹出窗口