如何在web-API中获取域名/IP名称

本文关键字:域名 IP 名称 获取 web-API | 更新日期: 2023-09-27 18:04:51

如何在web-API中获得以下IP地址中提到的(ipName:PortNumber) ?

https://**ipName:PortNumber**/ProductController/{productId}

我们有不同的服务器,如:000.00.000:8080 (ipname:portnumber), 111.11.111:8181.

我想把这些动态加载到一个字符串中,如下所示。

string webServiceUrl = "https://"+ IP name +"Product Controller/{product Id}"

如何在web-API中获取域名/IP名称

如果您的URI是一个字符串,您可以获得您想要的信息如下:

Uri uri = new Uri("https://example.com:1234/ProductController/7");
string host = uri.Host; // "example.com"
int port = uri.Port; // 1234

ApiController内部,您可以获得当前请求的URI为Request.RequestUri

如果你想构造一个给定主机和端口的URI,你可以简单地做一些轻量级的事情,像这样:

string uri = string.Format("https://{0}:{1}/ProductController/7", host, port);

或者使用一些更健壮的东西,比如使用UriBuilder

下面是我如何在Web Api中访问Request对象…

if (Request.Properties.ContainsKey("MS_HttpContext"))
{
     var ip = (HttpContextWrapper)Request.Properties["MS_HttpContext"]).Request.UserHostAddress;
     var host = ((HttpContextWrapper)Request.Properties["MS_HttpContext"]).Request.Url.Host;
     var port = ((HttpContextWrapper)Request.Properties["MS_HttpContext"]).Request.Url.Port;
}

希望能有所帮助。