[Пожалуйста, отредактируйте заголовок, если он окажется недостаточно хорошим]
У меня есть код, который запускает XSL-преобразование:
objMemoryStream = new MemoryStream();
xslTransform = new XslCompiledTransform();
xpathXmlOrig = new XPathDocument("E:\\xslt error\\Simulation_of_error\\input.xml");
xslSettings = new XsltSettings();
xslSettings.EnableScript = true;
xslTransform.Load(strXmlQueryTransformPath, xslSettings, new XmlUrlResolver());
xslTransform.Transform(xpathXmlOrig, null, objMemoryStream);
objMemoryStream.Position = 0;
StreamReader objStreamReader = new StreamReader(objMemoryStream);
Метод xslTransform.Load(strXmlQueryTransformPath, xslSettings, new XmlUrlResolver());
является жертвой, которая иногда выходит из строя из-за некоторой проблемы с тайм-аутом.
Я хочу обнаружить сбой этой кодовой строки и выполнить снова, пока она не будет успешно выполнена!
Я пытался использовать «TRY CATCH и WHILE»:
bool flag = true;
do
{
try
{
xslTransform.Load(strXmlQueryTransformPath, xslSettings, new XmlUrlResolver());
flag = false;
}
catch
{
flag = true;
}
} while (flag);
но проблема в том, что "ошибка регистрируется в файле журнала", хорошо. Весь код находится под еще одним оператором try, который, как я подозреваю, записывает в журнал. Это то, чего я не хочу ... Я не хочу, чтобы конечный пользователь знал о сбое этой кодовой строки.
Есть ли способ сделать это?
Появление ошибки совершенно случайно. В первый раз, когда это не удается, я пытаюсь повторить код, что может привести к успешному преобразованию (при следующей попытке)! По этой причине я пришел к выводу, что отзыв метода Load () решит проблему.