8

私は Sitecore の開発に不慣れなので、この質問が基本的なものであれば申し訳ありません。エージェント (スケジュールされたタスク) と WCF サービスの両方を作成し、両方を SiteCore プロジェクトに追加しました。エージェントは、WCF サービス コードが呼び出すのと同じコードを呼び出します。

私が抱えている問題は、Database.Template[ID template]処理したいアイテムの対応するテンプレートの ID コンテナーを渡すと、エージェント タスク内では機能しますが、WCF サービス内では機能しないことです。

Database.Template[ID id]WCF サービス内で呼び出しを行うとエラーが発生NullReferenceExceptionしますが、エージェント内でまったく同じ呼び出しを行うと、テンプレートが適切に収集されます。

これは、呼び出し元のアプリケーションが Web サービスではなく Web ページであることに依存する何らかの構造上の理由によるものですか?

編集#1:許可された拡張子としてsvcがあり、両方を試しました

Sitecore.Configuration.Factory.GetDatabase("master") 

var siteContext = Sitecore.Configuration.Factory.GetSite("websiteMaster");
siteContext.Database.Template[]; 

both which return NullReferenceException.

I also can successfully obtain an Item, using GetItem, however when I try to access the Template property of that item, I get a NullReferenceException.

4

4 に答える 4

9

WCF サービスからの Sitecore コンテキストがないためSitecore.Context.Database、null です。

svc許可された拡張子のリストに追加するか、次の方法でデータを取得できますSitecore.Configuration.Factory.GetDatabase("master")

于 2013-04-01T12:28:07.077 に答える
0

これは理想的なソリューションではありませんが、このほぼ一行一行を WCF サービスから ASMX ベースのサービスに変換したところ、すべてがうまく機能しました。私が抱えていた唯一の問題は、サービスを呼び出すときにアクセス許可の問題が発生したことでした。

このタイプのブロック内に ASMX サービス関数の内容をラップしました。

using (new Sitecore.SecurityModel.SecurityDisabler()) { }

そして、すべてが魔法のように機能し始めました。これは私が遭遇した Sitecore フレームワークのバグではないのではないかと考え始めています。正式な報告書の提出方法を知っている方がいらっしゃいましたら教えてください。

于 2013-04-01T18:16:15.367 に答える
0

Website\App_Config\Include\SwitchMasterToWeb.config を確認し、必要に応じて名前を変更/削除することも価値があります。それ以外の場合は、マスター データベースが web として表示されるためです。パッチ構成であるため、トラブルシューティング時に簡単に見逃す可能性があります。

于 2016-02-10T14:08:36.220 に答える