2011-01-11 2 views
2

Недавно я создал 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 отправлять электронные письма (но не другие части моего приложения) и/или предотвращать запись в файл? FYI на сайте есть файлы, которые работают нормально.

Я действительно не понимаю, что может вызвать эти проблемы. Любые ответы или идеи для отладки будут оценены. Дайте мне знать, если вам нужно разъяснить что-либо.

EDIT: Похоже, что мой файл Global.asax просто ничего не делает. Как событие не вызвано почему-то. Даже события asp.net.

+0

Вы уверены, что настройки SMTP на реальном сервере верны и что указанный SMTP-сервер позволяет отправлять почту тем, кому вы настроили ELMAH для отправки электронных писем? Если вы создаете тестовую страницу, на которой вы пишете код для отправки электронной почты на этот адрес электронной почты, используя те же настройки SMTP, это работает? –

+0

На сайте уже есть страницы, которые отправляют электронное письмо с использованием нашего SMTP-сервера gmail. Также я знаю, что это работает, потому что при запуске кода локально отправляется электронное письмо. Он просто не отправляется на сервер. – William

+0

Ваш файл Global.asax.cs наследуется от HttpApplication? –

ответ

0

Используете ли вы другой файл web.config для своей локальной и производственной среды? Обычно я нахожу, что если мой местный работает, но моя жизнь не такова, моя конфигурация виновата. Если живой сайт успешно отправляет электронные письма не ELMAH, я бы предположил, что это конфигурация ELMAH в live web.config.

Проверьте, что вы добавили соответствующий ключ в раздел конфигурации, если используете IIS6.

Также, если вы используете IIS7 на вашем реальном сервере, вам нужно будет добавить ключ ELMAH в раздел system.webServer/modules файла web.config.

+0

Спасибо за ваш ответ. Я не беспокоился об этом. Страница веб-дисплея elmah работает, поэтому мы просто собираемся с этим пока. – William

Смежные вопросы