2016-10-16 2 views
3

콘텐츠 전송 서버에서 프로그래밍 방식으로 Sitecore "마스터"데이터베이스에 액세스하는 방법은 무엇입니까? 어디 코드를 사용하여 마스터 데이터베이스에 직접 액세스 할 수 있습니다.Sitecore의 Content deliver server에서 프로그래밍 방식으로 master 데이터베이스에 액세스하는 방법?

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master"); 

불가능합니다.

답변

3

수 없습니다. 그리고 무엇보다, 당신도 시도해서는 안됩니다. 이 서버는 Content Delivery 서버라고하며 그 목적은 콘텐츠를 전달하는 데 있습니다. 그리고 Sitecore master 데이터베이스는 게시되지 않은 콘텐츠를 저장하므로 아직 최종 사용자에게 전달해서는 안됩니다.

내가 추측하고 있지만 (추측 일뿐입니다.) 사용자 생성 콘텐츠를 master 데이터베이스에 저장 한 다음 어느 시점에 최종 사용자에게 게시하려고합니다. 그게 당신이 필요하면, 당신은 Sitecore User Generated Content에 대한 모든 기사를 확인해야합니다.

다른 질문에서 master 데이터베이스에 항목을 만드는 데 Sitecore Web API을 사용하고있는 것으로 나타났습니다. Publishing items using Sitecore Web API에 대해서도 생각해 볼 수 있습니다.

+0

Ok 어떻게 마스터 DB에 액세스 할 수 있습니까? 예를 들어 제 경우에는 사용자 생성 콘텐츠가 있습니다. 사용자가 웹 사이트에 입력 한 콘텐츠는 어떻게 게시합니까? –

+0

내 대답에서 첫 번째 링크를 확인하십시오. "sitecore 사용자 생성 콘텐츠"에 대한 Google 검색입니다. 세부 사항에서 모두 설명 된 많은 다른 접근 방식이 있습니다. –

2

몇 달 전 우리는 조용한 비슷한 문제가있었습니다. 우리는 UGC를 구하기위한 작업을했습니다.

이 문제에 대한 우리의 솔루션은 Sitecore 사용자 지정 이벤트를 사용하는 것이 었습니다. 이 로컬 큐 경우 기본적으로 우리는 사용자가 생성 된 데이터를 수집하고, 이벤트 전역 대기 경우 첫번째 인수가 판정하는 이벤트

CommentsRemoteSavingEvent eventmodel = new CommentsRemoteSavingEvent(commentModel); 

EventManager.QueueEvent(eventModel, true, false); 

를 전용 모델을 생성하고 큐, 두번째 결정한다. 이벤트 모델은 모든 필수 정보를 저장하는 사용자 지정 클래스입니다. 형상 관리 시스템 우리에

은 이제 구독 후크를 만들어야했습니다에 논문이 코드 줄은 CommentsRemoteSavingEvent에 가입

public class CommentsRemoteSavingEventHook : IHook 
{ 
    public void Initialize() 
    { 
     EventManager.Subscribe(new Action<CommentsRemoteSavingEvent>(CommentsRemoteSavingHandler.Run)); 
    } 
} 
에서, EVENTTYPE는 형상 관리 시스템에 발사와 특정을 할 수

사용자 정의 이벤트 이벤트가 dequeued 될 때 처리기가 실행됩니다.

훅 자체

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"> 
    <sitecore> 
    <hooks> 
     <hook type="YOURNAMESPACE.CommentsRemoteSavingEventHook, YOURDLL" /> 
    </hooks> 
    </sitecore> 
</configuration>`enter code here` 

핸들러 자체 코드의 첫 번째 행으로부터 안전하게 이벤트를 제거이

public class CommentsRemoteSavingHandler 
{ 
    /// <summary> 
    /// This method is used handle the dequeued event 
    /// </summary> 
    /// <param name="e">The event</param> 
    public static void Run(CommentsRemoteSavingEvent e) 
    { 
     EventManager.RemoveQueuedEvents(new EventQueueQuery() { EventType = typeof(CommentsRemoteSavingEvent) }); 
      //// Use the CommentsRemoteSavingEvent which holds now all data 
    } 

같이 구현 될 수있는 간단한 구성을 통해 고리에 첨가 될 수있다 이벤트 대기열, 그래서 그것은 다시 대기열을 떼지 않을 것이다.

매개 변수로 주어진 CommentsRemoteSavingEvent에서 이제 CD쪽에 넣은 모든 정보가 이제는 CM쪽에 있습니다.

이러한 논문 정보를 기반으로 사용자 생성 주석과 마찬가지로 CM 시스템에 직접 있기 때문에 간단하게 항목을 만들고 게시 할 수 있습니다.

이 정보가 CD에서 CM로 데이터를 전송하고 CM 시스템에서 처리하는 데 도움이되기를 바랍니다.

0

이전에는 상황이 같았지만 실제로는 Sitecore Item Web API를 사용하지 않았습니다. 세 가지 기능 만 수행하면되므로 자신의 컨트롤러를 만들었고 master 데이터베이스와 통화하는 메서드를 추가했습니다. CM 환경에서 노출 시켰고 CD 서버에서 CM URL을 사용하여 액세스했습니다.

example : http://cmsitecore/yourcontroller/yourmethod