我最近在我正在处理的网站上设置了Elmah。实际的日志记录和elmah视图页面在我的本地和活动服务器上均可用。 Elmah电子邮件发送正在我的本地工作,但不在现场服务器上。我做了一些四处寻找,找不到任何解决方案,但我找到了一个帖子,其中有人建议在Global.asax中添加一些代码,让elmah事件登录到文件以尝试和调试它。下面这个建议我创建了一个Global.asax文件(该网站以前没有之一),并添加以下代码:Elmah电子邮件发送和File.AppendText不在现场服务器上工作
protected void ErrorMail_Mailing(object sender, ErrorMailEventArgs e)
{
string tos = (e.Mail.To.Count != 0) ? string.Join(",", e.Mail.To.ToList().Select(x => x.ToString()).ToArray()) : string.Empty;
string msg = string.Format("Sending mail to {0}. ", tos);
string filename = HostingEnvironment.MapPath("~/UploadedFiles/0/ElmahMailLog.txt");
StreamWriter file = File.AppendText(filename);
file.WriteLine(msg);
file.Close();
}
protected void ErrorMail_Mailed(object sender, ErrorMailEventArgs e)
{
string tos = (e.Mail.To.Count != 0) ? string.Join(",", e.Mail.To.ToList().Select(x => x.ToString()).ToArray()) : string.Empty;
string msg = string.Format("Sent mail to {0}. ", tos);
string filename = HostingEnvironment.MapPath("~/UploadedFiles/0/ElmahMailLog.txt");
StreamWriter file = File.AppendText(filename);
file.WriteLine(msg);
file.Close();
}
protected void Session_Start(object sender, EventArgs e)
{
string msg = "Session started";
string filename = HostingEnvironment.MapPath("~/UploadedFiles/0/ElmahMailLog.txt");
StreamWriter file = File.AppendText(filename);
file.WriteLine(msg);
file.Close();
}
protected void Application_Error(object sender, EventArgs e)
{
string msg = "An error occured";
string filename = HostingEnvironment.MapPath("~/UploadedFiles/0/ElmahMailLog.txt");
StreamWriter file = File.AppendText(filename);
file.WriteLine(msg);
file.Close();
}
然后我去了一个不存在生成一个404错误页面,我的文本文件我的本地机器,因此本上:
Session started
An error occured
Sending mail to [email protected]
Sent mail to [email protected]
另外从我的本地机器触发时,我收到了错误的电子邮件。当我将此代码移到演示网站(在实时网络服务器上)时,虽然日志文件为空,并且电子邮件未发送。虽然这个错误会记录到Elmah数据库中。
我能想到的唯一的事情就是IIS设置一定不正确。任何人都可以想到一个设置,防止elmah发送电子邮件(但不是我的应用程序的其他部分)和/或将阻止写入文件?仅供参考,该网站确实有文件上传,工作得很好。
我真的很茫然,至于什么会导致这些问题。任何答案或想法调试将不胜感激。让我知道你是否需要澄清任何事情。
编辑:它看起来像我的Global.asax文件只是没有做任何事情。就像事件没有因某种原因而被召唤一样。即使是asp.net事件。
您确定活动服务器上的SMTP设置是否正确,并且您指定的SMTP服务器允许向您配置ELMAH的用户发送邮件给谁?如果您创建了一个测试页面,您可以使用相同的SMTP设置编写代码以发送电子邮件到该电子邮件地址,这是否工作? – 2011-01-12 03:56:13
网站上已经有使用我们的Gmail SMTP发送电子邮件的页面。另外我知道它的作品,因为当本地运行代码的电子邮件发送。它只能在服务器上发送失败。 – William 2011-01-12 16:42:54