我最近在我正在處理的網站上設置了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