当IActionResult内的HttpClient调用外部服务器时,哪个设备发出HTTP请求

时间:2016-07-01 10:45:02

标签: asp.net asp.net-mvc http client-server

我正在尝试理解ASP.NET MVC上的一些非常基本的东西,以便清楚地了解谁做了什么,但到目前为止我可悲地失败了。

考虑以下物理设备,一台PC和两台服务器:

  1. 我托管ASP.NET网站的物理服务器
  2. 外部服务器,比如WorldBank
  3. 连接到我网站的用户PC(即我的服务器)
  4. 当用户访问我的主页时,我想向他显示从WorldBank获取的一些数据(从WorldBank检索JSON并在我的网站上显示为html)。

    我想到了这个IAction,比如在索引视图中说:

    public IActionResult Index()
    {
        using (HttpClient client = new HttpClient())
        {
            var response = await client.GetAsync("http://api.worldbank.org/countries?format=json");
           //Process data, perhaps put in a viewmodel and return View
        ...      
        }
        ...
      return View(model);
    }
    

    问题

    一旦我的网站设置并运行,如果用户访问我的索引页面,哪个物理设备向WorldBank发出请求? 它是用户的电脑还是我的服务器?如何查看?

    在我的MVC学习曲线中,我到目前为止假设My Server运行HomeController中的内容,因此它是My Server,它将调用WorldBank。

    感谢您的任何澄清,如果这个问题很简单,我会道歉。

1 个答案:

答案 0 :(得分:0)

在询问一些同事之后,似乎Oliver是对的:控制器内部的内容在服务器上运行。