【问题标题】:DotNetNuke and custom developmentDotNetNuke 和定制开发
【发布时间】:2011-11-12 10:24:16
【问题描述】:

我们正在考虑在很短的时间内购买 DotNetNuke(或 Sitefinity),但有一个问题我无法快速找到答案。 (I have a separate but similar post with Sitefinity as the focus, if you can answer that better or in addition.)

我们目前根本没有使用任何 CMS,并且我们有一些自定义开发不会因为我们为我们的部分或大部分网站使用 CMS 而消失。

我们的定制开发是 c# ASPX,带有站点主页面和嵌套的站点主页面。这些自定义应用程序在我们的网站中不拥有自己的顶级,而是属于分支的一部分,通常向下一层或两层(例如,http:www.contoso.com/branch/app/default.aspx)。

  • DotNetNuke 通常如何配置为 CMS/自定义“混合模式”?例如,DotNetNuke 是安装在网站的“顶部”,还是安装在网站的“需要的地方”。
  • 在混合 CMS 和自定义 Web 应用程序时,这有什么关系?
  • CMS 界面是否允许添加这些自定义应用程序,还是您只需转到 Web 服务器并将它们添加到结构中?
  • 从阅读其他帖子看来,我们可以创建自己的自定义 c# 模块,并让 CMS 编辑器“插入”页面上的模块。有人可以帮我确认一下吗?

如果我没有提供足够的细节,请随时询问更多。

【问题讨论】:

    标签: content-management-system dotnetnuke


    【解决方案1】:

    DNN 最常安装在网站的根目录,但这不是必需的。它有时会作为应用程序在属于较大站点的一部分的虚拟目录中运行。

    可以在 DNN 中的正确位置添加 .aspx 页面。 UrlRewrite 处理程序最初会查看所有此类请求,并假设现有页面和友好的 url 处理程序不认为他们“拥有” .aspx 页面,DNN 将停止处理请求并将其交给您的页面。没有特定的方法可以将这些页面“注册”到 DNN。我一般不会推荐这种方法,但它确实有效,并且在特定情况下很有意义。

    或者,您可以编写自己的 DNN 模块。现有代码通常可以很容易地通过将代码转换为在继承自 PortalModuleBase 的 .ascx 用户控件中工作来进行调整。想要利用核心 DNN 功能的代码,例如当然需要修改成员资格或权限才能使用 DNN API。

    DNN 模块方法通常是最佳选择。但是您的具体情况可能会使其他方法之一更适合您。基本上只要你的站点布局清楚,哪些请求是发往 DNN 的,哪些不是,你可以根据需要与其他 asp.net 代码混合搭配。

    【讨论】:

      【解决方案2】:

      在混合配置中导致问题的一件事是configuration inheritance。 如果 DNN 是根应用程序,您要么必须在应用程序的 web.config 中删除有问题的 http 模块和处理程序,要么使用 DNN(根)web.config 中的位置设置禁用继承:

      <location path="." inheritInChildApplications="false">
          <system.web>
          ...
          </system.web>
      </location>
      

      维护应用程序的 web.config 和 DNN web.config 之间的继承是脆弱的。 DNN web.config 中的更改可能会导致虚拟目录中的应用程序失败。除了删除每个 http 模块和处理程序之外,您至少需要将 DNN 的 App_Code 目录添加到应用程序配置中。

      另一方面,位置设置并不总是与 DNN 模块配合得很好,尤其是当它们除了从 PortalModuleBase 继承的控件之外还有 aspx 页面时。就个人而言,我从来没有让 DNN 的位置设置工作得足够好。

      另见

      How to disable web.config Inheritance for Child Applications in Subfolders in ASP.NET?

      How do I stop web.config inheritance

      Avoid web.config inheritance in child web application using inheritInChildApplications

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-13
        • 1970-01-01
        • 2011-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多