Elmah电子邮件发送和File.AppendText无法在实时服务器上运行

时间:2011-01-11 23:18:43

标签: asp.net email file elmah

我最近在我正在制作的网站上设立了Elmah。实际的日志记录和elmah视图页面适用于我的本地服务器和实时服务器。 Elmah电子邮件发送正在我的本地工作,但不在实时服务器上。我做了一些环顾四周,找不到任何解决这个问题的方法,但我找到了一个帖子,其中有人建议在Global.asax中添加一些代码,让elmah事件记录到文件中进行尝试和调试。根据该建议,我创建了一个global.asax文件(该网站之前没有),并添加了以下代码:

    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 myemail@someplace.com. 
Sent mail to myemail@someplace.com. 

此外,当我从本地计算机触发时收到错误电子邮件。当我将此代码移动到演示站点(在实时网络服务器上)时,虽然日志文件为空并且电子邮件未被发送。但错误确实记录在Elmah数据库中。

我唯一能想到的是IIS设置一定不正确。任何人都可以想到一个设置会阻止elmah发送电子邮件(但不是我的应用程序的其他部分)和/或会阻止写入文件吗?仅供参考,该网站确实有文件上传工作正常。

我真的不知道会导致这些问题的原因。任何答案或调试的想法将不胜感激。如果您需要澄清任何事情,请告诉我。

编辑:看起来我的Global.asax文件根本就没有做任何事情。就像事件没有被某些原因调用一样。甚至是asp.net事件。

1 个答案:

答案 0 :(得分:0)

您是否在本地和生产环境中使用不同的web.config文件?我经常发现,如果我的本地工作但我的生活没有,那么我的配置有问题。如果实际站点成功发送非ELMAH电子邮件,那么我建议它是实时web.config中的ELMAH配置。

如果您使用的是IIS6,请检查是否已将相关密钥添加到配置部分。

此外,如果您在实时服务器上运行IIS7,则需要将ELMAH密钥添加到web.config文件的system.webServer / modules部分。

相关问题