【问题标题】:Can a web api sit on remote server?web api可以放在远程服务器上吗?
【发布时间】:2015-05-04 18:42:23
【问题描述】:
或者它必须与调用它的应用程序在同一台服务器上?我是 web api 的新手,所以我正在阅读一些教程,但他们都认为 web api 是 mvc 应用程序的一部分。此外,它们显示对 api 的调用是使用 javascript 完成的,但我想在我的 MVC 应用程序控制器中进行调用。这可能吗?
【问题讨论】:
标签:
asp.net-mvc
asp.net-web-api
【解决方案1】:
您可以在任何地方托管 Web API。
当 Web API 与使用它的网站不在同一台服务器上时,唯一需要考虑的是,默认情况下,Web API 不接受来自不同域的请求。例如,如果网站在“server1.com”中,而 Web API 在“server2.com”中,则从 Web 服务器对 Web API 的调用将被拒绝。
如果是这种情况,您需要配置 Web API 服务器以启用 CORS(跨源资源共享),以便它接受来自不同域的请求。如果您想了解更多信息,请查看此文档:
【解决方案2】:
Web Api 可以随心所欲地存在。典型地看到一个有限的 API 主要用于处理 MVC 应用程序的 AJAX 与 MVC 应用程序一起使用,主要是因为它使构建端点的 URL 变得更简单。如果您在外部托管 Web Api,则必须对 API 端点 URL 进行硬编码,因为无法再使用 Url.Action 之类的东西自动生成它们。无论如何,这是一种完全可以接受的处理方式。
不过,您可能至少希望将 Web Api 的基本 URL 添加为 Web.config 中的应用程序设置。这样一来,您就不会最终得到对特定域的硬编码引用,这些引用散布在您的应用程序中。这使得将您的 Web Api 移动到不同的域变得更加容易,尤其是在谈论从开发到生产时。
也完全可以在您的实际控制器操作中使用 Web Api。您只需要使用 HttpClient 之类的东西来连接它并发出请求。