0

我正在使用如下所示的 linq 语句来返回页面。页面返回,内容字段填充到数据库中,但 OData 响应中的内容为空。有任何想法吗?

     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

这原来是我的 cd_storage_conf.xml 配置文件的问题。一切都应该指向代理数据库,但一项映射定义如下:

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

所以 OData 服务没有找对地方。

于 2012-11-13T15:40:48.470 回答
0

如果您在 Broker 数据库中确实拥有所有需要的数据,那么您的代码就可以完美运行。代码无法正常工作的唯一情况是:您的 web 服务没有正确的配置,或者您在 Broker 数据库中没有 PageMeta(检查 PAGE 表中 PUBLICATION_ID=20 和 ITEM_REFERENCE_ID 的行) =1397)或者当您在 Broker 数据库中没有 PageContent 时(检查 PAGE_CONTENT 表中的 PUBLICATION_ID=20 和 PAGE_ID=1397 的行)。

您可以做的最简单的测试是通过在浏览器中进入“.../odata.svc/PageContents(PageId=1397,PublicationId=20)”来尝试自己访问该条目。如果此 URL 不起作用,那么您需要将 OData Webservice 日志记录设置为 DEBUG(检查 logback.xml)并搜索与页面/查询相关的错误消息。

希望这可以帮助。

于 2012-11-09T01:11:53.510 回答