Готовым решением является значение Timeout веб-службы.Я обрабатываю ошибки веб-службы SharePoint на стороне сервера с помощью блока Try / Catch и либо молча прерываю работу, либо сообщаю пользователю об ошибке после второй попытки.Например, если бы у вас была функция для получения GUID списка из отображаемого имени, которое вы бы использовали (в VB).,.
Dim ws As New SPLists.Lists()
Try
ws.Credentials = GetCredentials()
ws.Timeout = 60000 '1 minute timout
doc = XDocument.Parse(ws.GetListCollection().OuterXml)
SPGetListID = (From x In doc.Elements.First.Elements _
Where x.Attribute("Title").Value.Equals(ListName) _
Select x.Attribute("ID").Value).FirstOrDefault
Catch timeout As TimeoutException
ws.Abort()
Catch other As Exception
ws.Abort() 'or use a timing loop to call this function again
End Try
.,,где тайм-аут запроса отменяет запрос.Если в вашем случае веб-служба возвращает еще одну ошибку, ее можно устранить в разделе «Поймать другое».
Я бы не стал устанавливать значение ws.Timeout равным 3600000, потому что на веб-сервере, скорее всего, будет установлен таймаут до истечения часа.Вместо этого вы можете использовать цикл синхронизации в блоке Catch (или в коде, который вызывает эту функцию) и снова вызывать веб-сервис через заданные интервалы.В этом коде вы хотели бы ограничить количество обращений к подпрограмме веб-службы, чтобы избежать бесконечного цикла.