2011-08-14 1 views
0

Я получаю данные listitem с помощью List.asmx в SharePoint 2010 (проверка подлинности).Как обрабатывать CommunicationException при использовании Lists.asmx в SharePoint 2010

Код выглядит следующим образом.

private void GetItems(string listname) 
{ 
    ListsService.ListsSoapClient client = new ListsService.ListsSoapClient(); 
    appset = new AppSettings(); 
    client.CookieContainer = appset.CookieSetting; 
    client.GetListItemsAsync(listname, null, null, null, "10", null, null); 

    client.GetListItemsCompleted += new EventHandler<ListsService.GetListItemsCompletedEventArgs>(client_GetListItemsCompleted); 

} 

void client_GetListItemsCompleted(object sender, ListsService.GetListItemsCompletedEventArgs e) 
{ 
    listBox1.ItemsSource = from element in e.Result.Descendants(XName.Get("row", "#RowsetSchema")) 
          select new Lists 
          { 
           Title = (string)element.Attribute("ows_LinkTitle") 
          }; 
} 

При истечении времени аутентификации формы происходит необработанное исключение CommunicationException. Трассировка стека находится здесь.

на System.ServiceModel.Channels.HttpChannelUtilities.ValidateAuthentication (HttpWebRequest запрос, ответ HttpWebResponse, WebException responseException, HttpChannelFactory завод) на System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse (HttpWebRequest запрос, ответ HttpWebResponse, HttpChannelFactory завод, WebException responseException) на System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.ProcessResponse (HttpWebResponse ответа, WebException responseException) в System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse (IAsyncResult результат) на System.ServiceModel.Channels. HttpChannelFactory.HttpRequestChannel .HttpChannelAsyncRequest.OnGetResponse (результат IAsyncResult) в System.Net.Browser.ClientHttpWebRequest. <> c_ DisplayClassa.b _8 (State2 Object) в System.Threading.ThreadPool.WorkItem.doWork (Object о) в System.Threading.Timer.ring()

я не мог справиться даже CommunicationException если я использую try ~ catch. Итак, дайте мне знать, как обращаться с CommunicationException.

ответ

0

Перед вызовом GetListItemsAsync необходимо зарегистрировать событие GetListItemsCompleted. Кроме того, оберните GetListItemsAsync в блок try-catch.

Любая ошибка будет выбрана как исключение из вызова GetListItemsAsync или будет сообщена как ошибка через GetListItemsCompletedEventArgs.

+0

Спасибо за ваш совет. –

+0

Спасибо за ваш совет. Но я не мог решить, используя ваш совет. Кажется, что CommunicationException происходит до того, как GetListItemsCompleted будет выпущен. Также я не мог поймать Исключение в блоке try ~ catch. –

Смежные вопросы