【问题标题】:Sitecore: Get Media Item from master databaseSitecore:从主数据库获取媒体项目
【发布时间】:2016-12-13 17:20:06
【问题描述】:
hyperlink.NavigateUrl = Sitecore.StringUtil.EnsurePrefix('/',Sitecore.Resources.Media.MediaManager.GetMediaUrl(item));

当我试图点击链接时,它说找不到资源。因为它试图从网络数据库中获取项目。如何从主数据库中获取项目?

【问题讨论】:

    标签: sitecore


    【解决方案1】:

    你不能通过代码来做到这一点。请参考Sitecore fundamentals

    您应该发布项目。 或者切换您的网站以使用主数据库而不是网络:

    <configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
      <sitecore>
        <sites>
          <site name="website">
            <patch:attribute name="database">master</patch:attribute>
          </site>
        </sites>
      </sitecore>
    </configuration>
    

    【讨论】:

      【解决方案2】:

      将此添加到行尾:?sc_database=master

      现在应该是这样的:

      hyperlink.NavigateUrl = Sitecore.StringUtil.EnsurePrefix('/',Sitecore.Resources.Media.MediaManager.GetMediaUrl(item)) + "?sc_database=master";

      【讨论】:

        【解决方案3】:

        虽然我完全同意@Anton 的回答,但要回答您的具体问题:

        我如何从主数据库中获取项目

        你可以这样做:

        var masterDB = Sitecore.Configuration.Factory.GetDatabase("master");
        
        var itemFromMaster = masterDB.GetItem(item.ID);
        

        【讨论】:

        • 虽然你可以这样做,OP应该考虑他是否应该。如果这是面向公众的网站代码并且该站点部署到 CD 服务器,则 CD 服务器的最佳做法是删除“master”的连接字符串。如果这样做了,这两个答案都将失败。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多