【问题标题】:Elmah email sending and File.AppendText not working on live serverElmah 电子邮件发送和 File.AppendText 在实时服务器上不起作用
【发布时间】:2011-06-07 12:29:17
【问题描述】:

我最近在我正在开发的网站上设置了 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 事件。

【问题讨论】:

  • 您确定实时服务器上的 SMTP 设置正确,并且您指定的 SMTP 服务器允许将邮件发送给您已配置 ELMAH 以将电子邮件发送给的任何人吗?如果您创建一个测试页面,并在其中编写代码以使用相同的 SMTP 设置将电子邮件发送到该电子邮件地址,这是否有效?
  • 网站中已有页面使用我们的 gmail SMTP 发送电子邮件。我也知道它有效,因为在本地运行代码时会发送电子邮件。它只是在服务器上发送失败。
  • 您的 Global.asax.cs 文件是否继承自 HttpApplication?
  • @Jeff 我们没有使用 asax 文件。所以它会做任何 .net 的默认设置。

标签: asp.net email file elmah


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的回复。我一直没有担心它。 elmah 网页显示页面正在运行,所以我们现在就使用它。
猜你喜欢
  • 2021-09-27
  • 2013-04-04
  • 2014-05-02
  • 2018-05-14
  • 1970-01-01
  • 2017-10-06
  • 2020-05-09
  • 1970-01-01
  • 2010-09-07
相关资源
最近更新 更多