繁体   English   中英

ELMAH:您可以将其设置为仅远程发送电子邮件错误吗?

[英]ELMAH: Can you set it up to email errors only remotely?

在本地调试解决方案时,我不希望收到ELMAH错误电子邮件。 当应用程序托管在远程计算机上时,我只想接收它们。 这可能吗?

我遇到了同样的问题,并且拒绝为本地和远程使用不同的web.configs的想法,因为这在源代码管理中不能很好地发挥作用(但请参见下面的评论)。

相反,我将其添加到使用Elmah的每个站点的Global.asax文件中:

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中配置的电子邮件地址。

我找到了一种在VS 2010中使用配置转换的解决方案。我从基本web.config中删除了<errorMail />标记,然后使用转换标记将其添加到了Web.Qa.Config和Web.Release.Config中。 当我发布时,它允许远程计算机在本地禁止发送电子邮件的同时发送电子邮件。

我很确定您可以做到这一点。 只需过滤传出的错误电子邮件 当然,请使用一些设置来表明它是远程托管的。 或者只是拥有两个不同的web.configs并确保已关闭“开发人员一个”。

通过修改web.config文件,可以使电子邮件转到本地计算机上的提取文件夹而不是SMTP服务器。

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

或者,您可以将其放在开发框中的Machine.config设置中,这样就不必一直触摸web.config文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM