Есть ли способ установить тайм-аут в Системе. Linq. Xml. XDocument. Загрузка (представляют uri в виде строки)? Или я должен использовать технику, описанную в Реализации C# Универсальный Тайм-аут?
Насколько я знаю, нет ничего встроенного. Вы можете самостоятельно получить XML-содержимое с помощью экземпляра WebRequest (для которого вы можете установить таймаут) и затем передать XML-данные непосредственно в метод XDocument.Load
.
Технически, наиболее "надежным" решением было бы реализовать XmlResolver самостоятельно, который использует WebRequest
в реализации GetEntity() для выполнения таймаута. Затем создайте XmlReader
на основе вашего XmlResolver
и передайте XmlReader
в XDocument.Open
.
Причина, по которой я говорю, что это было бы более "надежно", заключается в том, что если XML-файл ссылается на другие объекты на веб-сервере (например, DTD), то вы, вероятно, захотите, чтобы таймаут применялся и к ним, а не только к начальному запросу.