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

时间:2014-10-30 18:00:49

标签: c# asp.net-mvc asp.net-mvc-4

我在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问题开始,但奇怪的是当我在VS2010上的其他MVC4项目上使用相同的DLL时,在Framework 4上,然后它工作,现在当我在Framework 4上创建一个干净的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>");
}

所以它必须对ViewContext的{​​{1}}执行某些操作,但是什么?

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

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

1 个答案:

答案 0 :(得分:0)

因此经过大量的反复试验后,我偶然从主项目中删除了一个主要的MVC DLL。所以我使用NuGet在那里恢复MVC4。现在我使用更新来恢复它,然后你去...解决了。

新的MVC 4.0版本是4.0.40804.0如果您遇到与我相同的问题,那么只需通过NuGet更新MVC并解决问题。