Меня воодушевило то, что клиентская объектная модель Sharepoint 2010, по сути, обертывает удаленные вызовы на сервер. Итак, я скопировал Microsoft.Sharepoint.Client.Silverlight.dll и Microsoft.Sharepoint.Client.Silverlight.Runtime.dll с моего сервера Sharepoint 2010 на мою машину разработки (без Sharepoint). Я предположил, что код Silverlight, который я тестировал на сервере Sharepoint 2010, также будет работать на моей машине разработки. Естественно, я не использую 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), я добавляю свой домен / пользователя и пароль. Однако я получаю следующую ошибку:
Примечание. Мне удалось заставить веб-службы Sharepoint 2010 работать с аналогичной ошибкой, изменив привязку security mode = "Transport" и включив файл clientAccessPolicy.xml на корневой веб-сайт Sharepoint. Нужно ли мне настроить другой каталог 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.Async> sendState --- Конец трассировки стека внутреннего исключения --- в System.Net.Browser.AsyncHelper.BeginOnUI (SendOrPostCallback beginMethod, состояние объекта) в System.Net.Browser.BrowserHttpWebRequest.EndGetResponse (IAsyncResult asyncResultPoint) в MicrosoftClient. ClientRequest.ExecuteQueryGetResponseAsyncCallback (IAsyncResult asyncResult)} System.Exception {System.Security.SecurityException}