51

我有一个 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”不包含“Current”的定义,并且找不到接受“System.Web.HttpContextBase”类型的第一个参数的扩展方法“Current”(您是否缺少 using 指令或程序集引用?)

我怎样才能解决这个问题?

4

1 回答 1

124

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

HttpContext.Current

System.Web.HttpContext.Current

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

public HttpContextBase HttpContext { get; }

Controller 类上的 HttpContext 返回没有 Current 属性的 HttpContextBase。

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

于 2013-10-17T16:23:22.550 回答