У меня есть проект с 10 плюс пакетами. Каждый пакет имеет уведомление об успехе, отказе и ошибке по почте, настроенное с помощью задачи «Отправить почту» Я могу заменить это заданием сценария для отправки почтового уведомления, поскольку мне приходится многократно повторять попытку отправки почтового уведомления.
Я подготовил логи c, как показано ниже в моей задаче сценария.
int attempts = 0;
int times =3;
int delayMs =1000;
do
{
try
{
attempts++;
<Actual Code>
//throw new NullReferenceException("Exception Thrown Manually.");
Dts.TaskResult = (int)ScriptResults.Success;
break; // Sucess! Lets exit the loop!
}
catch (Exception e)
{
if (attempts == times)
{
Dts.Events.FireError(-1, "Task Name", "The process tried to send mail notification " + attempts.ToString() + " times but exception caught on the final attempt as well.Hence failed to send Mail notification.Please see the error message - " + e.Message,String.Empty, 0);
Dts.TaskResult = (int)ScriptResults.Failure;
break; // Failure! Lets exit the loop!
}
Dts.Events.FireError(-1, "Task Name", "Exception caught on attempt " + attempts.ToString() + " - Will retry after delay " + delayMs.ToString() + " MilliSeconds "
//+ e.Message
, String.Empty, 0);
System.Threading.Thread.Sleep(delayMs);
}
} while (true);
Я вручную заменяю задачу отправки почты на задачу сценария для каждого пакета. Это отнимает много времени и может привести к человеческим ошибкам. Я не уверен, смогу ли я разместить эти логи c где-нибудь и попытаться вызвать эти логи c как функцию из всех моих пакетов, например, возможность повторного использования кода.
Я пытаюсь найти какое-то решение этой проблемы ,