【问题标题】:Can a web api sit on remote server?web api可以放在远程服务器上吗?
【发布时间】:2015-05-04 18:42:23
【问题描述】:

或者它必须与调用它的应用程序在同一台服务器上?我是 web api 的新手,所以我正在阅读一些教程,但他们都认为 web api 是 mvc 应用程序的一部分。此外,它们显示对 api 的调用是使用 javascript 完成的,但我想在我的 MVC 应用程序控制器中进行调用。这可能吗?

【问题讨论】:

  • WebAPI 与 webservice 相同(不完全是),您可以从任何 C# 层调用它。您可以使用 HttpClient 类调用托管在其他服务器上的 Web api。请参阅此链接。 stackoverflow.com/questions/19448690/…

标签: 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 之类的东西来连接它并发出请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      • 2014-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多