0

次のようなlinqステートメントを使用してページを返しています。ページが返され、コンテンツフィールドがDBに入力されますが、OData応答ではコンテンツがnullになります。何か案は?

     var pages = (from p in cds.PageContents
                 where p.PublicationId == 20 && p.PageId == 1397
                 select p).ToList<SDLODataClient.SDLOData.PageContent>();

    foreach (SDLODataClient.SDLOData.PageContent p in pages)
    {
        txtOutput.InnerHtml += p.Content;
    }
4

2 に答える 2

0

ブローカーデータベースに必要なすべてのデータが実際にある場合、コードは完全に機能します。コードが正しく機能しない唯一のケースは、次の場合です。Webサービスの正しい構成がない場合、またはBrokerデータベースにPageMetaがない場合(PUBLICATION_ID = 20およびITEM_REFERENCE_IDの行のPAGEテーブルを確認してください) = 1397)またはBrokerデータベースにPageContentがない場合(PAGE_CONTENTテーブルでPUBLICATION_ID=20およびPAGE_ID=1397の行を確認してください)。

実行できる最も簡単なテストは、ブラウザで「... / odata.svc / PageContents(PageId = 1397、PublicationId = 20)」に移動して、自分でエントリにアクセスしようとすることです。このURLが機能しない場合は、OData WebサービスのログをDEBUGに設定し(logback.xmlを確認)、ページ/クエリに関連するエラーメッセージを検索する必要があります。

お役に立てれば。

于 2012-11-09T01:11:53.510 に答える
0

これは、私のcd_storage_conf.xml構成ファイルの問題であることが判明しました。すべてがブローカーDBを指す必要がありましたが、1つの項目マッピングは次のように定義されました。

<Item typeMapping="Page" cached="false" storageId="defaultFile"/

そのため、ODataサービスは適切な場所を探していませんでした。

于 2012-11-13T15:40:48.470 に答える