2011-08-14 1 views
0

Je reçois des données listitem en utilisant Lists.asmx dans SharePoint 2010 (Authentification par formulaire).Comment gérer CommunicationException lors de l'utilisation de Lists.asmx dans SharePoint 2010

Le code est comme ceci.

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") 
          }; 
} 

Lorsque le délai d'expiration de l'authentification de formulaire est atteint, CommunicationException non gérée est déclenchée. La trace de la pile est ici.

à System.ServiceModel.Channels.HttpChannelUtilities.ValidateAuthentication (HttpWebRequest demande, HttpWebResponse réponse, WebException responseException, HttpChannelFactory usine) à System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse (HttpWebRequest demande, la réponse HttpWebResponse, HttpChannelFactory usine, WebException responseException) à System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.ProcessResponse (réponse HttpWebResponse, WebException responseException) à System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse (suite IAsyncResult) à System.ServiceModel.Channels. HttpChannelFactory.HttpRequestChannel .HttpChannelAsyncRequest.OnGetResponse (résultat IAsyncResult) à System.Net.Browser.ClientHttpWebRequest. <> c_ DisplayClassa.b _8 (Object état2) à System.Threading.ThreadPool.WorkItem.doWork (Object o de) à System.Threading.Timer.ring()

je ne pouvais pas gérer CommunicationException même si j'utilise try ~ catch. Alors, s'il vous plaît laissez-moi savoir comment gérer CommunicationException.

Répondre

0

Vous devez vous inscrire à l'événement GetListItemsCompleted avant d'appeler GetListItemsAsync. En outre, enveloppez GetListItemsAsync dans un bloc try-catch.

Toute erreur sera levée en tant qu'exception de l'appel à GetListItemsAsync ou sera signalée comme une erreur via GetListItemsCompletedEventArgs.

+0

Merci de votre aide. –

+0

Merci de votre aide. Mais je ne pouvais pas résoudre en utilisant votre conseil. Il semble que CommunicationException a eu lieu avant que GetListItemsCompleted soit kické. De plus, je n'ai pas pu attraper l'Exception dans un bloc try ~ catch. –

Questions connexes