我们正在为_Layout.cshtml中使用的Viewbag项获取RuntimeBinderException。我们在内存分析器中观察到这些异常。它们不是致命的(一切正常)但令人烦恼,我们想要清除它们。
例如,以下代码会导致异常:
<title>@ViewBag.Title</title>
...
@RenderBody()
ViewBag.Title在视图中设置。
此外,我们有ViewBag.WebAnalyticsParameters,它在控制器操作中设置并在_Layout.cshtml中使用。
当我们从_Layout代码中删除ViewBag.Title和ViewBag.WebAnalyticsParameters时,异常不会发生并被分析器应用程序捕获。
作为旁注,例外仅在页面的初始加载时发生。刷新之后,不会发生异常,这表明视图编译是我们遇到问题的地方。
更新1:我创建了一个空的MVC 4应用程序并再次出现此错误。 你可以看到附图。
此示例应用中的视图(主页/索引)包含以下代码:
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Index</h2>
更新2:我已将项目从MVC 4升级到5.3.2。例外情况仍然存在。
答案 0 :(得分:2)
这些异常是由正在使用的基础动态对象引起的。 .NET框架总是抛出这些异常。
VS中的 解决方案:转到菜单工具/选项,选择左侧的顶级项Debugging
,然后选择 [v]启用我的代码。这可以避免VS在框架深处抛出异常时无用地破坏。