Sharepoint COM可以在Silverlight中工作,但不能在WPF中工作



我遇到了一个有趣的情况。我需要从WPF应用程序和Silverlight应用程序访问SharePoint站点资产库。我的Silverlight应用程序工作100%,但是我的WPF应用程序从服务中得到一个(500)内部服务器错误。

Silverlight代码:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        ClientContext clientContext = new ClientContext("http://myfullyQualifiedName.com");
        clientContext.Load(clientContext.Web);
        clientContext.ExecuteQueryAsync(onQuerySucceeded, onQueryFailed);
    }
    private void onQuerySucceeded(object sender, ClientRequestSucceededEventArgs args)
    {
    }
    private void onQueryFailed(object sender, ClientRequestFailedEventArgs args)
    {
    }
WPF代码:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        ClientContext clientContext = new ClientContext("http://myfullyqualifiedname.com/");
        //clientContext.Credentials = new NetworkCredential("UserName", "Password", "Domain");
        clientContext.Load(clientContext.Web);
        clientContext.ExecuteQuery();
    }

我已经尝试了使用和不指定凭据,无论哪种方式我得到内部服务器错误。

我使用的Silverlight和非Silverlight Sharepoint客户端DLL的版本都是14.4762.1000。

现在,如果我将URL更改为我们的其他站点之一,WPF代码将完美地工作。所以我想一定是某个地方的SharePoint设置

解决了!!为什么WPF认证不能在Silverlight工作时工作。(WPF尝试使用Kerberos, Silverlight使用NTLM) -简单修复:

ClientContext _clientContext = new ClientContext(sharePointSiteUrl);
Web _web = _clientContext.Web;
_clientContext.Load(_web, website => website.Title);
_clientContext.Load(_web.Webs);
CredentialCache cc = new CredentialCache();
cc.Add(new Uri(sharePointSiteUrl), "NTLM", CredentialCache.DefaultNetworkCredentials);
_clientContext.Credentials = cc;
_clientContext.AuthenticationMode = ClientAuthenticationMode.Default;
_clientContext.ExecuteQuery();
ListCollection _listCollection = _web.Lists;

相关内容

  • 没有找到相关文章

最新更新