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

时间:2014-05-22 18:21:38

标签: c# asp.net-web-api asp.net-web-api2

如何获取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}"

2 个答案:

答案 0 :(得分:3)

如果您在字符串中包含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类一样更健壮的东西。

答案 1 :(得分:2)

以下是我在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;
}

希望它有所帮助。