1. ホーム
  2. c#

[解決済み] System.Web.HttpContextBase' に 'Current' の定義がない MVC 4 with Elmah Logging

2022-02-18 11:03:27

質問

私はC# ASP.NET MVC 4プロジェクトを持っており、処理されない例外をキャッチするためにElmahを使用しています。 これは、ほとんどの状況でうまく機能します。

しかし、JQuery Ajaxを使用して呼び出されるコントローラメソッドで、現在のContextを取得できないことがわかりました。

例えば、JsonResultを返す私のコントローラ・メソッドに、次のようなテスト・コードがあります。

try
{
    throw new Exception("This is a test");
}
catch(Exception e)
{
    Elmah.ErrorLog.GetDefault(HttpContext.Current).Log(new Elmah.Error(e));
}

は、その

HttpContext.Current

が以下のようなエラーを発生させます。

'System.Web.HttpContextBase' には、以下の定義が含まれていません。 また、最初の引数を受け入れる拡張メソッド 'Current' もありません。 の型が見つかりませんでした。 ディレクティブやアセンブリリファレンスを使用すること?)

どうすればこの問題を回避できますか?

解決方法は?

HttpContext.Current への参照を取得するには、次のように置き換える必要があります。

HttpContext.Current

System.Web.HttpContext.Current

これは、Controller クラスが HttpContext という名前のプロパティを定義しているためで、次のように定義されています。

public HttpContextBase HttpContext { get; }

Controller クラスの HttpContext は、Current プロパティを持たない HttpContextBase を返します。

したがって、ここで適切に名前空間を解決する必要があります。