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

nei*_*ldt 47 c# asp.net-mvc asp.net-mvc-4

我有一个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));
}
Run Code Online (Sandbox Code Playgroud)

HttpContext.Current

导致以下错误;

'System.Web.HttpContextBase'不包含'Current'的定义,并且没有扩展方法'Current'可以找到类型为'System.Web.HttpContextBase'的第一个参数'(你是否缺少using指令或程序集引用) ?)

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

Din*_*esh 109

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

HttpContext.Current
Run Code Online (Sandbox Code Playgroud)

System.Web.HttpContext.Current
Run Code Online (Sandbox Code Playgroud)

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

public HttpContextBase HttpContext { get; }
Run Code Online (Sandbox Code Playgroud)

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

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