私はこのelmahテクニックを初めて使用しているので、webapiプロジェクトでELMAHを実装しようとしています。私は全体を実装することができません。ウェブのサンプルコードまだ私は取得していません。Web apiプロジェクトでElmahを実装する
誰かがelmahで適切な作業の解決策を達成するのに手伝ってください。 作業溶液を、私はここで
私はこのelmahテクニックを初めて使用しているので、webapiプロジェクトでELMAHを実装しようとしています。私は全体を実装することができません。ウェブのサンプルコードまだ私は取得していません。Web apiプロジェクトでElmahを実装する
誰かがelmahで適切な作業の解決策を達成するのに手伝ってください。 作業溶液を、私はここで
を理解するために、本当に参考になるデモ目的のために提供されている場合、私は非常に感謝するだろうがELMAH
をインストールし使用して、エラーメールを送信する手順は、適切なSMTP設定を使用するように設定ファイルを更新します。ここでは、設定ファイルの設定の例
< security allowRemoteAccess="false" />
< errorMail subject="Production Error - {1}: {0}" smtpServer="server address" from="[email protected]" to="[email protected]" />
は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; } }
登録ElmahExceptionLogger
クラスの例は@Paresh作品によって答えは、あなたがそれ以来、Elmah.Contrib.WebApiパッケージを使用する必要があるにもかかわらずstartup.cs
config.Services.Add(typeof(IExceptionLogger), new ElmahExceptionLogger());
でありますWeb APIを使用してELMAHを使用するために必要なすべてが含まれています。
私はinstall ELMAH with Web APIのガイドを書いています。基本的にあなたがELMAH
とElmah.Contrib.WebApi
パッケージをインストールしてから、このようにそれを設定します:メール設定について
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
...
config.Services.Add(typeof(IExceptionLogger), new ElmahExceptionLogger());
...
}
}
、あなたはELMAH Configuration Validatorを使用して、あなたのweb.configファイルを検証することができます。