Я столкнулся с той же проблемой и отказался от идеи иметь разные web.configs для локального и удаленного, так как это не очень хорошо работает с контролем версий (но см. Комментарии ниже).
Вместо этого я добавил это в Global.asax файл на каждом сайте, который использует Elmah:
void ErrorMail_Mailing(object sender, ErrorMailEventArgs e)
{
e.OnErrorMailing(); // Prevent local machine errors from being mailed to the rest of the team
}
OnErrorMailing () - это метод расширения, объявленный в нашей веб-библиотеке следующим образом:
/// <summary>
/// Prevent local machine errors from being mailed to the rest of the team. Feel free to add your own machine names/case blocks here
/// </summary>
public static void OnErrorMailing(this ErrorMailEventArgs e)
{
switch (e.Error.HostName.ToLower())
{
case "mymachinename":
e.Mail.To.Clear();
e.Mail.To.Add("MYEMAILADDRESS");
break;
}
}
Конечно, если у вас есть только один сайт, который использует Elmah, или вы не возражаете против дублирования кода, вы можете поместить этот код прямо в global.asax.
Я не сомневаюсь, что есть более элегантные решения, но это работает для меня. Только я получаю исключения от моего локального компьютера, а производственные исключения отправляются на адрес электронной почты, настроенный в web.config.