2011-01-11 21 views
2

私は最近、私が取り組んでいるサイトでElmahを設定しました。実際のロギングとelmahビューのページは、ローカルサーバーとライブサーバーの両方で動作します。 Elmahのメール送信はローカルでは有効ですが、ライブサーバーでは機能していません。私はいくつか見て回ってこの問題の解決策を見つけることができませんでしたが、人がGlobal.asaxにコードを追加してelmahイベントをファイルに記録して試してデバッグするよう提案した記事を見つけました。そのアドバイスに続いて、私は(サイトは以前に1を持っていなかった)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] 

また、ローカルマシンからトリガーされたときにエラーメールが届きました。このコードをデモサイト(ライブWebサーバー上)に移動したとき、ログファイルは空であり、電子メールは送信されません。しかし、エラーはElmahデータベースに記録されます。

私が考えることができるのは、IISの設定が正しいものではないということだけです。 elmahが電子メールを送信できないようにする設定を考えている人はいますか(私のアプリケーションの他の部分ではない)、ファイルへの書き込みを妨げるでしょうか?参考までに、サイトにはファイルのアップロードがあり、正常に動作します。

私は本当にこれらの問題の原因となるものをここで失っています。デバッグのためのあらゆる答えやアイデアが評価されます。何かを明確にする必要があるかどうかを教えてください。

EDIT:私のGlobal.asaxファイルはまったく何もしていないようです。イベントのように何らかの理由で呼び出されていないようです。 asp.netイベントさえ。

+0

ライブサーバーのSMTP設定が正しいこと、および指定したSMTPサーバーが電子メールを送信するようにELMAHを構成したユーザーにメールを送信できることを確認してください。同じSMTP設定を使用してその電子メールアドレスに電子メールを送信するためのコードを記述するテストページを作成すると、それは機能しますか? –

+0

GmailのSMTPを使用して電子メールを送信するサイトにはすでにページがあります。また、コードをローカルで実行すると、電子メールが送信されるため、動作することがわかります。それはサーバー上でのみ送信に失敗します。 – William

+0

Global.asax.csファイルはHttpApplicationから継承していますか? –

答えて

0

ローカルとプロダクション環境で異なるweb.configファイルを使用していますか?私は通常私のローカルが働いていても私のライブがそうでないと私の設定が間違っていることがわかります。ライブサイトがELMAH以外のメールを正常に送信している場合は、ライブweb.configのELMAH設定であることをお勧めします。

IIS6を使用している場合は、関連するキーを設定のセクションに追加したことを確認してください。

ライブサーバーでIIS7を実行している場合は、ELMAHキーをweb.configファイルのsystem.webServer/modulesセクションに追加する必要があります。

+0

お返事ありがとうございます。私はそれについて心配していない。 elmahウェブの表示ページは機能しているので、今のところそれを使用しています。 – William

関連する問題