如何将现有的webapi服务与微风一起使用?请注意,我的webapi服务位于"server1/api",web应用程序位于"server2"。我尝试更改数据服务中的服务名称,但得到了XMLHttpRequest异常101。这是一个跨域错误。是否可以将微风与来自另一个域的webapi服务一起使用?
跨来源微风应用程序
是的,可以从一台服务器获取Breeze客户端应用程序,并让该Breeze应用程序与另一台服务器上托管的数据服务进行通信。
当为CORS配置服务时,Breeze客户端应用程序在支持CORS的浏览器上可以很好地跨源运行。
跨来源问题和CORS解决方案属于网络安全问题的一个更一般的类别。它们不是Breeze特有的。我们计划在微风网站的"凉爽微风"部分发布一个关于CORS+微风的主题。
更新:2013年12月10日
此示例使用了一个基本的CORS实现,如果您已升级到Web API2,我们不再建议您使用该实现。请阅读这篇优秀的文章"ASP.NET Web API 2中的CORS支持",其中解释了基本的CORS以及如何获得Web API2 CORS支持。
这个答案的其余部分保持原样。
带CORS的Todo样品
在此之前,请查看Todo示例的代码。该示例的服务器是为CORS设置的,已部署到todo.breezejs.com,您可以通过查看Breeze-todo-sample主题页面底部的jsFiddle来查看它的运行情况。
四个兴趣点:
-
App_Start/BreezeSimpleCorsHandler.cs执行
-
App_Start/BreezeWebApiConfig.cs打开
//此服务器上已启用CORSGlobalConfiguration.Configuration.MessageHandlers.Add(new BreezeSimpleCorsHandler(((;
-
IIS7需要Web.config行(IIS8或VS2012的IIS Express不需要(
-
Scripts/app/dataservice.js已准备好指向外部服务器;请看这一行:
//*跨来源服务示例*//var serviceName='http://todo.breezejs.com/api/todos';//不同来源中的控制器
希望现在能帮你渡过难关。