如何分析未知模块上的System.AccessViolationException

本文关键字:System AccessViolationException 模块 未知 | 更新日期: 2023-09-27 18:28:33

我在Framework 4上有一个MVC 4项目,当您使用HtmlHelper.ViewContext.Writer 扩展HtmlHelper时,它会引发System.AccessViolationException

以下代码编译得很好:

public static void Test(this System.Web.Mvc.HtmlHelper helper)
{
    System.IO.TextWriter writer = helper.ViewContext.Writer;
    writer.WriteLine("<b>Test Output</b>");
}

但当我在视图中使用它时,它会抛出错误。现在我已经确认了导致问题的DLL,但我不知道该查找什么,因为错误消息没有帮助,甚至连堆栈跟踪都没有。问题是,该项目是在VS2010上编写的MVC3项目,现在我更新到VS2013并试图升级到MVC4,问题就开始了,但奇怪的是,当我在Framework 4上的VS2010中的其他MVC4项目上使用相同的DLL时,它就起了作用,现在当我在Framework4上制作一个干净的MVC4项目时,就会发生这种情况。

我知道有问题的DLL导致了这个问题,我确实有它的源代码,但我不知道该找什么。

我确实测试了其他扩展方法,例如,这很好:

public static System.Web.Mvc.MvcHtmlString Test(this System.Web.Mvc.HtmlHelper helper)
{
    return new System.Web.Mvc.MvcHtmlString("<b>Test Output</b>");
}

所以它必须对HtmlHelperViewContext做些什么,但什么?

最简单的方法是简单地更改扩展方法,但根据公司政策,我不允许这样做,所以我需要弄清楚这一点。

我最大的问题是,有问题的DLL不是我真正写的,只有我的电脑有VS2013,所以任何方向都会很有帮助,比如寻找什么或类似的东西。

如何分析未知模块上的System.AccessViolationException

因此,经过大量的尝试和错误,我意外地从主项目中删除了我的一个主MVC DLL。所以我用NuGet恢复了那里的MVC4。现在我用更新来恢复它,就这样。。。已解决。

新的MVC 4.0版本是4.0.40804.0如果你和我有同样的问题,那么只需通过NuGet更新MVC并解决问题。