2016-08-01 13 views
1

私はこのelmahテクニックを初めて使用しているので、webapiプロジェクトでELMAHを実装しようとしています。私は全体を実装することができません。ウェブのサンプルコードまだ私は取得していません。Web apiプロジェクトでElmahを実装する

誰かがelmahで適切な作業の解決策を達成するのに手伝ってください。 作業溶液を、私はここで

答えて

2

を理解するために、本当に参考になるデモ目的のために提供されている場合、私は非常に感謝するだろうがELMAH

  1. Elmah Nuget Package
  2. をインストールし使用して、エラーメールを送信する手順は、適切なSMTP設定を使用するように設定ファイルを更新します。ここでは、設定ファイルの設定の例

    < security allowRemoteAccess="false" /> 
    < errorMail subject="Production Error - {1}: {0}" smtpServer="server address" from="[email protected]" to="[email protected]" /> 
    
  3. ExceptionLoggerクラスを作成しています。ここでのWeb APIとそれ

    public class ElmahExceptionLogger : ExceptionLogger 
    { 
        private const string HttpContextBaseKey = "MS_HttpContext"; 
    
        public override void Log(ExceptionLoggerContext context) 
        { 
        // Retrieve the current HttpContext instance for this request. 
        HttpContext httpContext = GetHttpContext(context.Request); 
    
        // Wrap the exception in an HttpUnhandledException so that ELMAH can capture the original error page. 
        Exception exceptionToRaise = new HttpUnhandledException(message: null, innerException: context.Exception); 
    
        ErrorSignal signal; 
        if (httpContext == null) 
        { 
         signal = ErrorSignal.FromCurrentContext(); 
         // Send the exception to ELMAH (for logging, mailing, filtering, etc.). 
         signal.Raise(exceptionToRaise); 
        } 
        else 
        { 
         signal = ErrorSignal.FromContext(httpContext); 
         signal.Raise(exceptionToRaise); 
        } 
    } 
    
    private static HttpContext GetHttpContext(HttpRequestMessage request) 
    { 
        HttpContextBase contextBase = GetHttpContextBase(request); 
    
        if (contextBase == null) 
        { 
         return null; 
        } 
    
        return ToHttpContext(contextBase); 
    } 
    
    private static HttpContextBase GetHttpContextBase(HttpRequestMessage request) 
    { 
        if (request == null) 
        { 
         return null; 
        } 
    
        object value; 
    
        if (!request.Properties.TryGetValue(HttpContextBaseKey, out value)) 
        { 
         return null; 
        } 
    
        return value as HttpContextBase; 
    } 
    
    private static HttpContext ToHttpContext(HttpContextBase contextBase){return contextBase.ApplicationInstance.Context; } } 
    
  4. 登録ElmahExceptionLoggerクラスの例は@Paresh作品によって答えは、あなたがそれ以来、Elmah.Contrib.WebApiパッケージを使用する必要があるにもかかわらずstartup.cs

    config.Services.Add(typeof(IExceptionLogger), new ElmahExceptionLogger()); 
    
2

でありますWeb APIを使用してELMAHを使用するために必要なすべてが含まれています。

私はinstall ELMAH with Web APIのガイドを書いています。基本的にあなたがELMAHElmah.Contrib.WebApiパッケージをインストールしてから、このようにそれを設定します:メール設定について

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     ... 
     config.Services.Add(typeof(IExceptionLogger), new ElmahExceptionLogger()); 
     ... 
    } 
} 

、あなたはELMAH Configuration Validatorを使用して、あなたのweb.configファイルを検証することができます。

関連する問題