首页 > 解决方案 > Odata 服务元数据失败

问题描述

后端团队提供了新的 Odata 服务。我在清单中声明并在控制器中使用它。它在我的系统中工作正常。但它在任何其他环境中都无法正常工作。我收到一条错误消息 - 元数据的初始加载失败。还有一些内部服务器错误。

清单.json

"ordersq": {
            "uri": "/sap/opu/odata/sap/ZOrders_QUEUE_SRV/",
            "type": "OData",
            "settings": {
                "odataVersion": "2.0",
                "localUri": "localService/ZOrders_QUEUE_SRV/metadata.xml"
            }
        },

控制器:

var sServiceUrl = this.getOwnerComponent().getMetadata().getManifestEntry("sap.app").dataSources["ordersq"].uri;
                var OdataModel = new sap.ui.model.odata.v2.ODataModel(sServiceUrl);
                var sPath = "/BuyersQueueSet('" + mfOrder + "')";
                OdataModel.read(sPath, {
                    success: this.queueSuccess.bind(this),
                    error: this.queueError.bind(this)
                });
            }

有什么我想念的吗。我必须为那个 metadata.xml 做点什么吗?我没有再配置任何东西。我只是复制粘贴的 localuri 它是如何为其他服务提供的,而不为这个新服务添加任何元数据。

标签: odatasapui5metadata

解决方案


可能您遇到了 CORS 问题。如果您在请求 $metadata 时有 401 或 403,请检查网络跟踪。当您尝试从不同的服务器加载某些资源时,就会发生这种情况。

这是一个已知的常见问题,出于安全原因。有几种方法可以克服它,所有方法都有很好的记录。

一般来说,如果您使用 SAP Cloud Platform,只需在 Netweaver 服务器中配置一个指向您的服务的 Destination(您需要一个 Cloud Connector 来从云访问您的专用网络)。如果您在其他 Netweaver 服务器中部署您的应用程序,我认为最简单的解决方案是将 WebDispatcher 设置为反向代理。

另一种可能性是请求 $metadata 时出现 404 错误。如果你得到这个,那是因为你没有将你的请求路由到正确的 Netweaver 系统。确保配置 WebDispacher 以将某些 URL 解析到正确的系统。同样,大量的教程向您展示了如何做到这一点。


推荐阅读