【问题标题】:How do I not instantiate an instance of Cassini for each Area in my application?如何不为我的应用程序中的每个区域实例化 Cassini 实例?
【发布时间】:2010-11-25 15:11:55
【问题描述】:

我一直在实现区域,但发现它在启动 Cassini 时会为每个区域实例化一个开发服务器。

这真的有必要吗? MSDN 让我将这些区域设置为单独的 Web 应用程序,为什么我不能将它们放入类库中?

【问题讨论】:

  • 如果您将所有区域设置为使用相同的端口,则只应运行一个 Web 服务器。我们经历了同样的事情,直到我们弄清楚了。
  • 有意思,我试试

标签: asp.net-mvc cassini areas


【解决方案1】:

经过大量研究,答案似乎是“还没有”。我们仍处于 ASP.NET MVC v2 的预览版中,所以我决定我应该退出,直到他们感觉很好。

我想我会为那些对模块化 ASP.NET MVC 项目感兴趣的人记下我的经验。

目前,每当您进行构建时,它基本上会将您的所有子项目(为区域创建)复制到父项目中。这在构建之后有效但是,一旦您对某个区域中的视图进行了更改,该更改在您重建之前不会显示出来。这会损害敏捷性,我知道团队现在正在考虑它。

由于这种“断开连接”的项目结构,您确实会在我们通常忽略的视图中看到一些标记的问题(丢失智能感知)(如脚本引用等)。请记住,从长远来看,它只是一个应用程序。

另外,上面发布的问题。调试时您将拥有单独的开发实例,但它部署为一个应用程序。

总体而言,您可以选择“自行开发”您自己的模块化解决方案(就像 CWAB 所做的那样),但我建议您等待下一个“支持”预览版。我对这支球队和他们的能力感觉非常好。完善的领域真的会让我们满意。

【讨论】:

    【解决方案2】:

    是的,您可以将它们归结为类库。你可能想看看 MVCContrib 的人在做什么。他们称其为便携式区域,可为您提供所需的库。他们使用自己的嵌入式视图引擎从 dll 中获取视图。这是link,它会引导您完成整个过程。

    【讨论】:

      【解决方案3】:

      如果有人因为仍在使用多个项目构建区域而偶然发现这一点,您绝对可以在 MVC 2 中的单个项目中执行此操作。使用单项目方法,当您启动它时,您只会获得一个正在运行的实例本地。有一个 MSDN tutorial 可以引导您完成单个项目区域,但当您开始对其进行单元测试时,请注意他们的 area registration bug

      【讨论】:

        猜你喜欢
        • 2013-04-13
        • 1970-01-01
        • 2019-01-20
        • 1970-01-01
        • 2021-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-27
        相关资源
        最近更新 更多