Sharepoint COM работает с Silverlight, но не с WPF

Я столкнулся с интересной ситуацией. Мне нужно получить доступ к библиотеке ресурсов сайта SharePoint как из приложения WPF, так и из приложения Silverlight. Мое приложение 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 имеют версию 14.4762.1000.

Теперь, если я изменю URL-адрес на один из наших других сайтов, код WPF будет работать безупречно. Поэтому я думаю, что это должны быть настройки SharePoint где-то.


person Cornelius Kruger    schedule 04.09.2011    source источник
comment
Я предлагаю вам не сокращать клиентскую объектную модель как COM. COM, скорее всего, будет пониматься как объектная модель компонентов.   -  person John Saunders    schedule 05.09.2011


Ответы (1)


Решено !! Почему аутентификация 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;
person Mike Graham    schedule 26.02.2012