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 的定义的主要内容,如果未能解决你的问题,请参考以下文章