将Breeze与另一个域的WebApi服务结合使用



如何将现有的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';//不同来源中的控制器

希望现在能帮你渡过难关。

最新更新