我正在尝试使用 HttpClient 调用同一网站下的 Web API 端点。
我当前的 iis 设置如下 -
Main Website
- Application1
- WebApiApp
我正在尝试从 Application1 调用 WebApiApp 中使用 HttpClient 的 Web API Controller 。如果我在下面的代码中指定 m_service 的完整 url,它就可以工作-
using (HttpResponseMessage serviceResponse = await Client.GetAsync(new Uri(m_service + serviceEndPoint), HttpCompletionOption.ResponseHeadersRead))
{
return CreateResponse(serviceResponse);
}
由于这个应用程序在同一个网站下,我想使用相对路径从 web api 获取数据。我尝试这样做的原因是,该网站在多个网络服务器上运行,并且正在使用网络负载平衡器。为 WebApiApp Controller 使用完整的 url 会增加通过负载均衡器的额外开销。我想在同一台服务器上访问 web api 服务。
如果您需要更多详细信息,请告诉我。谢谢您的帮助!
最佳答案
您必须为 HTTP 请求提供基地址才能工作(我以为您已经准备好了)。只有相对 URI 不是有效的 URL。
API 是否在同一个站点下并不重要,Web 客户端将需要请求的完整 URL。因此,在您的情况下,您可以在基地址中设置 localhost。这是来自 http://www.asp.net/web-api/overview/advanced/calling-a-web-api-from-a-net-client 的示例代码.
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:9000/");
// code removed
HttpResponseMessage response = await client.GetAsync("api/products/1");
if (response.IsSuccessStatusCode)
{
// do something
}
}
关于c# - HttpClient 获取同一网站内的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33359303/