ASP.NET MVC 2.0是否使用流控制异常?

时间:2010-09-10 15:46:07

标签: asp.net-mvc

在代码抛出(处理)异常之后,似乎MVC使用异常来测试控制位置。

<% Html.RenderPartial("LogOnUserControl"); %>

应用程序按预期工作,我可以看到在尝试不同位置(视图,共享)时抛出异常几次。其他控件也会发生同样的事情。显然,MVC使用异常来探测文件的不同可能位置。

使用流量控制异常的IIRC是邪恶的,并不酷。 那么,我做错了什么,或者MVC不再酷了?

注意:让IDE在所有引发的异常上停止会使调试更容易,我通常会将其保留。这就是我从RenderPartial获得该异常的方式。

2 个答案:

答案 0 :(得分:3)

MVC 2.0使用控制流异常并不是真的。

但是,System.Web.dll v2.0(ASP.NET直到.NET 3.5的核心组件)具有一些低效的API,用于从虚拟路径实例化对象。 MVC 2.0通过具有视图查找缓存来缓解此问题。默认情况下,在开发期间禁用此缓存,以便您所做的更改立即可见,这就是您看到这些异常的原因。在实际的生产服务器上,在缓存查找后不会发生这些异常。

作为旁注,MVC 3将使用.NET 4中添加的新API,因此这不应该成为问题。

答案 1 :(得分:2)

在发布模式下运行时,视图位置会被缓存。