System.Web.HttpContextBase“不包含带有Elmah Logging的”当前“MVC 4的定义

本文关键字:定义 当前 MVC Logging 不包含带有 HttpContextBase Web 包含带 System Elmah | 更新日期: 2023-09-27 18:35:52

我有一个 C# 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"(您是否缺少 使用指令或程序集引用?

我该如何解决这个问题?

System.Web.HttpContextBase“不包含带有Elmah Logging的”当前“MVC 4的定义

要获取对 HttpContext.Current 的引用,您需要替换

HttpContext.Current

System.Web.HttpContext.Current

这是因为控制器类定义了一个名为 HttpContext 的属性,该属性定义为

public HttpContextBase HttpContext { get; }

控制器类上的 HttpContext 返回没有 Current 属性的 HttpContextBase。

因此,您需要在此处正确解析命名空间。