哦快乐。微软已经改变了他们的 Web API OData 实现......再次
感谢@coni2k 的深入研究并找出问题所在。
幸运的是,您不必修补 Breeze。我们故意公开该getRoutePrefix
方法,以便您可以自己在外部进行更改以满足您的需求。
在以下示例中,我已将您的建议合并到方法的主体中。
var adapter = breeze.config.getAdapterInstance('dataservice', 'webApiOdata');
adapter.getRoutePrefix = getRoutePrefix531; // plug-in alternative for THIS adapter instance.
function getRoutePrefix531(dataService) {
// Copied from breeze.debug and modified for Web API OData v.5.3.1.
if (typeof document === 'object') { // browser
var parser = document.createElement('a');
parser.href = dataService.serviceName;
} else { // node
parser = url.parse(dataService.serviceName);
}
// THE CHANGE FOR 5.3.1: Add '/' prefix to pathname
var prefix = parser.pathname;
if (prefix[0] !== '/') {
prefix = '/' + prefix;
} // add leading '/' (only in IE)
if (prefix.substr(-1) !== '/') {
prefix += '/';
} // ensure trailing '/'
return prefix;
};
在我撰写本文时,我们不确定如何检测您正在使用的 Web API OData 版本,这使得我们很难先验地判断哪个版本getRoutePrefix
适合您的应用程序。
希望最终能解决这个问题。不敢将默认设置更改为这个新版本,因为这会破坏每个必须与旧版本的 Web API OData 对话的现有应用程序。不知道我们如何才能赢得这场比赛。我们会看看它。目前令人沮丧。