【问题标题】:Nested Applications with ASP.NET MVC使用 ASP.NET MVC 的嵌套应用程序
【发布时间】:2008-11-11 13:15:51
【问题描述】:

我目前正在开发一个 asp.net-mvc 内容管理系统。能够部署嵌套应用程序将非常有用,例如/shop 在里面有一个单独的应用程序。甚至是 cms 的另一个实例。

我找到了一些关于限制 web.config 继承的信息,但我不知道这如何映射到 MVC 应用程序。我希望它本质上是相同的堆栈,它只会运行。然而,没有什么是那么容易的。

如果有人有这方面的经验,我将不胜感激。一个大型应用程序来统治它们的想法一点也不好。

硅。

【问题讨论】:

    标签: asp.net-mvc deployment


    【解决方案1】:

    说实话,您最大的障碍是创建路线并确保它们不会干扰系统中已有的路线。搞定之后,剩下的就简单了。

    您需要的第一件事是将 HttpModule 插入到 web.config 下的 .该模块将用于注册和自定义您要注册的 ViewEngine 或 Routes。执行此操作的方式与在 Global.asax 中执行的方式相同,但不是将它们放在 Application_Start 中,而是将它们放在 HttpModule 的静态构造函数中。这样它们只会像 Application_Start 那样加载一次。

    通过上述操作,您将创建一个易于传输的模块,并且不需要实施者修改其 Global.asax 代码来使您的东西正常工作。

    您可能想要做的第二件事是在 web.config 中创建自定义配置来设置应用程序的根路径等内容。当您在 HttpModule 中设置它时,这将被添加到路由中。您也可以使用它来存储不适合数据库的自定义信息。

    最后但不是必须的,您可能想要创建一个自定义 ViewEngine 来了解并理解您的文件夹结构。仅当您希望将视图存储在与默认视图不同的路径中时,才需要这样做,以最大程度地减少冲突。

    【讨论】:

      【解决方案2】:

      查看 Phil Haack 的 Grouping Controllers with ASP.NET MVC

      希望对你有帮助, 布鲁诺·菲格雷多

      【讨论】:

        【解决方案3】:

        我以前曾走这条路(使用 /blog),但发现它可行但复杂且难以维护。相反,我最终使用了子域:

        • www.example.com
        • shop.example.com
        • blog.example.com

        这些更容易维护,因为您可以让它们在 IIS 中作为单独的网站工作。当然,您始终可以将 www.example.com/shop 重定向到 shop.example.com。

        【讨论】:

        • 这对 SEO 非常不利,因为每个域都被视为一个新网站。
        • 如果他真的需要将一个 ASP.NET MVC 应用程序嵌套在另一个应用程序中,这可能会导致非常深的路径和 AFAIK,搜索引擎也不会真正喜欢这些。 :)
        • 其实不是这样的。 Google 更改了他们的算法,将所有子域视为同一个网站。
        • Keltex,这也不完全正确,Google 更改了算法以在域之间传递信誉,但它们不被视为同一个域。此外,通过的声誉与一个域的声誉不同,最好将其视为超级链接汁。
        猜你喜欢
        • 1970-01-01
        • 2021-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多