【问题标题】:Deploying multiple ASP.NET MVC application in a single Virtual directory在单个虚拟目录中部署多个 ASP.NET MVC 应用程序
【发布时间】:2014-10-14 16:45:27
【问题描述】:

通常可以通过将应用程序文件夹放在虚拟目录中来部署 ASP.NET MVC 应用程序。

应用程序文件夹包含

  1. bin 文件夹
  2. 脚本文件夹(如果需要)
  3. 查看文件夹
  4. Global.asax 文件
  5. web.config 文件

但是,我想将 bin 文件夹放在应用程序文件夹之外,以便我可以在单个应用程序文件夹中部署更多应用程序。所有应用程序共享 bin 文件夹,会话也被共享。

我想做的事
..虚拟目录
..\bin
..\App1Name\App1Contents
..\App2Name\App2Contents
..\App3Name\App3Contents
..web.config

我已经通过没有 Global.asax 文件的 web 表单实现了这个 web 应用程序。但在 MVC 应用程序中,我无法共享 bin 文件夹。

如何实现?
我需要将 Global.asax 文件放在哪里?
将bin文件夹放在Applications外的所有应用程序如何路由?

提前致谢

【问题讨论】:

  • “部署更多应用程序”和“共享 bin 文件夹和会话也得到共享”。听起来您想制作一个更大的应用程序。
  • 是的,我想创建一个更大的应用程序。但是每个子应用程序都有不同的功能、视图和控制器。只有会话需要共享。

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


【解决方案1】:

这是不可能的。您可以使用 Web 表单来实现这一点,因为每个单独的页面实际上都是它自己的应用程序。但是,MVC 的工作方式不同。许多因素,尤其是路由框架,要求 Web 应用程序是隔离的。您不能将多个 MVC 应用程序部署到同一个文档根目录。您可以将第二个 MVC 应用程序部署到第一个中的虚拟目录,但请注意,最外层应用程序的 web.config 也会影响内部应用程序。

【讨论】:

  • 如果无法使用公共 bin 文件夹,那么我想如何共享会话。
  • 通过为每个应用程序设置匹配的机器密钥。请参阅:blogs.msdn.com/b/httpcontext/archive/2012/06/22/…。它的重点是建立一个网络农场,但原理是一样的。 FWIW,无论如何,共享 bin 文件夹与此无关。
【解决方案2】:

基于您的应用程序已经共享公共二进制文件这一事实,您可能希望研究使用 MVC 区域来促进应用程序之间的逻辑分离(但将它们全部作为单个应用程序的一部分)。以下链接更详细地描述了这一点:MVC Areas

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 2016-07-15
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多