ЭЛМАХ: Можете ли вы настроить его на ошибки электронной почты только удаленно? - PullRequest
2 голосов
/ 18 января 2012

При локальной отладке моего решения я бы не хотел получать сообщения об ошибках ELMAH. Я хотел бы получать их, только когда приложение размещено на удаленной машине. Возможно ли это?

Ответы [ 4 ]

1 голос
/ 22 февраля 2012

Я столкнулся с той же проблемой и отказался от идеи иметь разные 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.

0 голосов
/ 04 мая 2012

Я нашел решение, которое заключается в использовании config config с VS 2010. Я удалил тег <errorMail /> из моего базового web.config, затем добавил его в мои Web.Qa.Config и Web.Release.Config с тегами transform. Когда я публикуюсь, это позволяет удаленным машинам отправлять электронные письма, пока они подавляются локально.

0 голосов
/ 23 февраля 2012

Электронные письма можно отправлять в папку раскладки на локальном компьютере вместо SMTP-сервера, изменив файл web.config

<system.net>
    <mailSettings>
        <smtp deliveryMethod="SpecifiedPickupDirectory">
            <specifiedPickupDirectory pickupDirectoryLocation="c:\temp\" />
        </smtp>
    </mailSettings>
</system.net>

Или вы можете указать это в настройках Machine.config на своем устройстве dev, чтобы вам не приходилось постоянно касаться файла web.config.

0 голосов
/ 19 января 2012

Я уверен, что вы можете сделать это.Просто отфильтруйте исходящие сообщения об ошибках .Конечно, используйте некоторые настройки, чтобы указать, что они размещены удаленно.Или просто создайте два разных файла web.configs и убедитесь, что для «dev one» отключено emaling.

...