Breeze Entity经理相对路径

时间:2014-05-20 18:33:34

标签: iis breeze relative-path single-page-application hottowel

类似的问题是HERE,但没有解决方案。我能够在localhost上运行我的项目,但一旦部署,加载元数据就失败了。查看chrome开发者工具,请求将发送至http://www.domain.org/breeze/metadata而非http://www.domain.org/projectname/breeze/metadata。在我的localhost上,元数据加载为http://localhost:xxxx/breeze/Metadata。我的实体经理被宣布为new breeze.EntityManager('breeze')。如果我将实体管理器更改为new breeze.EntityManager('projectname/breeze'),则所有工作正常,但它在我的localhost上不起作用。如何声明实体管理器以使路径相对于项目并在我的localhost上工作并在部署时使用?

1 个答案:

答案 0 :(得分:0)

您似乎可以假设数据服务器和Web服务器共享相同的来源。因此,您可以从浏览器的window.location对象(在Angular中注入$location)构造原点(无论是什么):

var origin = location.protocol+'//'+location.host+'/'; // 'ex: http://www.foo.com:3000/'
var projectName = location.hostname === 'localhost' ? '' : 'projectName/';
var serviceName = origin + projectName + 'breeze'.
var manager = new breeze.EntityManager(serviceName);

或者,您可以将任务委派给Web服务器,该服务器可以构建服务名称并将其作为您在客户端配置期间选择的JavaScript变量插入网页中。

如果你需要做出其他假设,我相信你可以从这里拿走它。