【问题标题】:Strange MVC Behaviour, AreaRegistrations firing twice奇怪的 MVC 行为,AreaRegistrations 触发两次
【发布时间】:2013-05-01 01:06:01
【问题描述】:

我最近完成了两个 MVC 项目的合并。在调试新项目时,几乎突然之间,我项目中的单个区域开始多次触发其 RegisterArea 方法。堆栈跟踪告诉我 Application_StartAreaRegistration.RegisterAllAreas 只被触发一次,但在内部,该区域被实例化了两次。

除了单一的默认路由之外,AreaRegistration 没有什么特别之处。

我不确定从哪里开始寻找解决方案,不胜感激。

【问题讨论】:

  • 放一个断点,以Debugging模式启动,每次断点时检查堆栈跟踪。
  • 不要粗鲁,但我知道调试我的应用程序。我已经调试了它,重构了整个九个。我正在寻找我从未遇到过的奇怪行为的可能原因。
  • 如果你这样做了,那么你肯定知道第二个 RegisterArea 是从哪里调用的吗?
  • 是的,来自 AreaRegistration.RegisterAllAreas,它是框架代码,可自动嗅出程序集中的 AreaRegistration 类型的类。问题是我只有一类 AreaRegistration 但它会触发两次。
  • 手动清理您的项目(删除 bin 的内容),并使用 Show All Files 检查解决方案中没有不是项目可见部分的文件。如果您一直在合并项目,那么您可能会留下一些东西

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


【解决方案1】:

在内部,MVC 缓存与区域关联的程序集,并将此数据写入文件。你应该能够检查这个文件,看看为什么它认为应该有两个实例。

您可以在this answer 中找到有关此文件的更多信息,但请查看c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\...\...\...\UserCache 中的文件。根据您使用的项目数量,此文件夹可能非常繁忙,但我能够通过按目录创建日期排序找到刚刚创建的示例项目。我不认为删除这个目录的内容会造成太大的伤害。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多