System.Web.HttpContextBase' 不包含带有 Elmah 日志记录的“当前”MVC 4 的定义

Posted

技术标签:

【中文标题】System.Web.HttpContextBase\' 不包含带有 Elmah 日志记录的“当前”MVC 4 的定义【英文标题】:System.Web.HttpContextBase' does not contain a definition for 'Current' MVC 4 with Elmah LoggingSystem.Web.HttpContextBase' 不包含带有 Elmah 日志记录的“当前”MVC 4 的定义 【发布时间】:2013-10-26 05:51:30 【问题描述】:

我有一个 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' 并且没有扩展方法 'Current' 接受第一个参数 可以找到“System.Web.HttpContextBase”类型的(您是否缺少 使用指令还是程序集引用?)

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

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

HttpContext.Current

System.Web.HttpContext.Current

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

public HttpContextBase HttpContext  get; 

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

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

【讨论】:

我试过了,如果我捕捉到异常,那很好,但似乎仍然没有记录未处理的异常? @Tommo1977 我认为,您可能缺少正确的 elmah 配置,但不确定 谢谢,我就是这样用的,System.Web.HttpContext curContext = System.Web.HttpContext.Current; ***.com/questions/21148209/…

以上是关于System.Web.HttpContextBase' 不包含带有 Elmah 日志记录的“当前”MVC 4 的定义的主要内容,如果未能解决你的问题,请参考以下文章