コンテンツ配信サーバー上のSitecore「マスター」データベースにプログラムでアクセスする方法コードを使用してmasterデータベースに直接アクセスする場所。Sitecoreのコンテンツ配信サーバーでmasterデータベースにプログラムでアクセスする方法
Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
できません。
コンテンツ配信サーバー上のSitecore「マスター」データベースにプログラムでアクセスする方法コードを使用してmasterデータベースに直接アクセスする場所。Sitecoreのコンテンツ配信サーバーでmasterデータベースにプログラムでアクセスする方法
Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
できません。
できません。そしてそれ以上のことは、あなたも試してはいけません。このサーバーはContent Delivery
サーバーと呼ばれ、その唯一の目的はコンテンツの配信です。また、Sitecore master
データベースには、公開されていないコンテンツが格納されており、エンドユーザーに配信するべきではありません。
私は推測していますが、推測しているところですが、ユーザが生成したコンテンツをmaster
データベースに保存して、ある時点でエンドユーザーに公開したいとします。それが必要な場合は、Sitecore User Generated Contentに関するすべての記事をチェックしてください。
master
データベースにアイテムを作成するためにSitecore Web API
を使用していることが他の質問でわかりました。 Publishing items using Sitecore Web APIについて考えることもできます。
数ヶ月前に私たちは静かな同様の問題を抱えていました。私たちは、UGCを救うための仕事を、ケース・コメントで行った。
問題の解決方法は、Sitecoreカスタムイベントを使用することでした。イベントをグローバルにキューに入っている場合 は基本的に、我々は、ユーザによって生成されたデータを収集し、専用のモデルを作成し、イベント
CommentsRemoteSavingEvent eventmodel = new CommentsRemoteSavingEvent(commentModel);
EventManager.QueueEvent(eventModel, true, false);
をキュー最初の引数が決定し、それがローカルにキューに入っている場合、もう一つは決定されます。イベントモデルは、すべての必要な情報を格納するためのカスタムクラスです。
に論文カスタムイベント 購読我々は今だけフックを作成する必要がありましたCMシステム・オン、
public class CommentsRemoteSavingEventHook : IHook
{
public void Initialize()
{
EventManager.Subscribe(new Action<CommentsRemoteSavingEvent>(CommentsRemoteSavingHandler.Run));
}
}
このコード行はCommentsRemoteSavingEventに加入して、EVENTTYPEは、CMシステムに発砲し、特定をすることができますイベントがデキューされるとハンドラが実行されます。
フック自体がフックに追加することができ、簡単な設定
<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
}
ように実装することができますイベントキューは、再びデキューされません。
Commentsであなたに与えられたCommentsRemoteSavingEventは、あなたがCD側に入れたすべての情報ですが、今CM側です。
これらの情報に基づいて、ユーザーが作成したコメントと同様に、CMシステムに直接アクセスできるため、これらの情報に基づいてアイテムを簡単に作成して公開することができます。
これは、CDからCMへデータを転送し、CMシステムで処理する際に役立つことを願っています。
私はタスクを実行する3つの関数しか必要ないので、実際にはSitecore Item Web APIを使用していませんでした。私自身のコントローラを作成し、そこにメソッドを追加しました。私はCM環境からそれらを公開し、CDサーバーから私はCM URLを使ってそれらにアクセスしていました:
example : http://cmsitecore/yourcontroller/yourmethod
私はコンテンツをどのように公開するのですか?例えば、私の場合、ユーザーが生成したコンテンツがあります。ユーザーがウェブサイトに入力したコンテンツをどのように公開するのですか? –
私の答えから最初のリンクを確認してください - それは "sitecoreユーザー生成コンテンツ"のgoogle検索です。すべての異なるアプローチが詳細に説明されています。 –