Я недавно создал 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.