System.Web.HttpContextBase 'не содержит определения для "Current" MVC 4 с протоколом Elmah
У меня есть проект С# ASP.NET MVC 4, который использует Elmah для обнаружения любых необработанных исключений. Это прекрасно работает в большинстве ситуаций.
Однако я обнаружил, что для метода контроллера, который вызывается с помощью вызова JQuery Ajax, я не могу получить текущий контекст.
Например, в моем методе контроллера, который возвращает 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' не содержит определения для "Текущий" и не используется метод расширения "Текущий", принимающий первый аргумент типа "System.Web.HttpContextBase" можно найти (вы не видите используя директиву или ссылку на сборку?)
Как я могу обойти эту проблему?
Ответы
Ответ 1
Чтобы получить ссылку на HttpContext.Current, вам нужно заменить
HttpContext.Current
с
System.Web.HttpContext.Current
Это потому, что класс Controller определяет свойство HttpContext, которое определяется как
public HttpContextBase HttpContext { get; }
HttpContext в классе Controller возвращает HttpContextBase, который не имеет свойства Current.
Следовательно, вам необходимо правильно разрешить пространство имен здесь.