2015-05-04 30 views
0

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

+1

的WebAPI是一样的web服务(不完全),你可以从任何C#层调用它。你可以使用HttpClient类来调用你的web api托管在其他服务器上。 看到这个链接。 http://stackoverflow.com/questions/19448690/how-to-consume-a-webapi-from-asp-net-web-api-to-store-result-in-database – Prashant

回答

1

Web Api可以在任何你想要的地方生活。通常看到一个有限的API主要用于MVC应用程序的MVC应用程序的AJAX,主要是因为它使得构建URL到端点更简单。如果您在外部托管Web Api,则必须对API端点URL进行硬编码,因为无法再使用类似Url.Action之类的东西来自动生成它们。无论如何,这是处理事情的完美接受方式。

不过,您可能至少想要将Web Api的基本URL作为应用程序设置添加到您的Web.config中。那样的话,你最终不会得到硬编码引用到一个特定的域,它散布着你的应用程序。这使得将Web Api移到不同的域更容易,特别是在谈论从开发到生产时。

在您的实际控制器操作中使用Web Api也完全可行。你只需要使用类似HttpClient的东西来连接它并发出请求。

2

您可以在任何地方托管Web API。

当Web API与使用它的Web站点不在同一台服务器上时唯一特别的考虑因素是默认情况下Web API不接受来自不同域的请求。例如,如果网站位于“server1.com”,而“server2.com”位置的Web API,则Web服务器对Web API的调用将被拒绝。

如果是这种情况,您需要配置Web API服务器以启用CORS(跨源资源共享),以便它接受来自不同域的请求。如果您想了解更多的相关信息,请看看这个文件:

相关问题