如何在azure中配置web api项目?

如何在azure中配置web api项目?,azure,asp.net-web-api,Azure,Asp.net Web Api,我们正在开发一个web api后端。。。实现了一些调用,使用sqlserver等在c#中完成。 后端将有多个客户端应用程序。一个是网站,一个是使用phonegap的移动应用程序,希望我们能得到更多使用该服务的客户端应用程序 我们希望设置独立于网站内容的web api项目,并且不会遇到跨域问题 是否可以为此使用反向代理?或者azure中的vpn?还有其他建议吗 Paul创建一个云服务(Web角色-mvc4web应用程序),然后将您的webapi部署到那里。只要确保webapi处理CORS问题,就可

我们正在开发一个web api后端。。。实现了一些调用,使用sqlserver等在c#中完成。 后端将有多个客户端应用程序。一个是网站,一个是使用phonegap的移动应用程序,希望我们能得到更多使用该服务的客户端应用程序

我们希望设置独立于网站内容的web api项目,并且不会遇到跨域问题

是否可以为此使用反向代理?或者azure中的vpn?还有其他建议吗

Paul

创建一个云服务(Web角色-mvc4web应用程序),然后将您的webapi部署到那里。只要确保webapi处理CORS问题,就可以从两个客户端调用api

更多信息:


附言:我在一个项目中工作,完全按照你说的那样。作为azure上我的webapi客户端的网站和移动应用程序,我们正在这样做。它工作得很好。

您需要做几件事:

设置WebApi以支持CORS(跨源资源共享)。通过从Microsoft安装Cors Nuget软件包,您可以轻松做到这一点:

Install-Package Microsoft.AspNet.WebApi.Cors
然后,您需要在应用程序生命周期的早期启用cors,例如在global.asax的application_Start部分:

GlobalConfiguration.Configuration.EnableCors();
有关更多详细信息,请参阅此链接:

我知道你很担心安全问题。好。然后你可能需要再做两件事来让你的CORS打得更好

首先,您应该真正考虑创建自定义Cors策略提供程序(请参见上面的链接)。由于您在Azure中托管WebApi,因此可以轻松配置允许的源代码。这应该是一个白名单,其中只包括您希望在webapi上允许的网站

其次,我假设您的用户在网站上经过身份验证。我还假设您调用WebApi的方式是通过jQuery或其他使用jQuery作为传输的提供者(如BreezeJS)。要将身份验证详细信息传递给WebApi,jQuery需要知道它应该这样做。最简单的方法是在网站上设置全局设置:

$.ajaxSetup({ crossDomain: true, xhrFields: { withCredentials: true } });
一个很好的技巧是使用Chrome进行测试,以准确地知道哪里出了问题(因为根据经验,某些东西会出问题)。然后,您可以打开此链接,查看线路上发生的所有详细信息:chrome://net-internals/#events


快乐编码!:)

CORS真的很棒!谢谢。现在找出一个身份验证方案。