Odata 服务元数据失败

Odata service Metadata failed

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

Manifest.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 是如何为其他服务提供的,而不为这个新服务添加任何元数据。

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

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

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

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