后端团队提供了新的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如何为其他服务提供它而不添加任何元数据的新服务。
答案 0 :(得分:0)
可能你遇到了CORS问题。如果您在请求$ metadata时有401或403,请检入网络跟踪。当您尝试从其他服务器加载某些资源时会发生这种情况。
这是一个众所周知的常见问题,出于安全考虑,这是一个问题。有几种方法可以克服它,所有这些都有很好的记录。
通常,如果您使用的是SAP Cloud Platform,只需在Netweaver服务器中配置指向您的服务的目的地(您需要云连接器才能从云访问您的专用网络)。如果您要在其他Netweaver服务器中部署应用程序,我认为最简单的解决方案是将WebDispatcher设置为反向代理。
另一种可能性是在请求$元数据时出现404错误。如果您收到此信息,那是因为您没有将请求路由到正确的Netweaver系统。确保配置WebDispacher以将某些URL解析为正确的系统。再次,大量的教程向您展示如何做到这一点。