[英]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.