2014-05-22 29 views
0

如何获取web-API中以下IP地址中提到的(ipName:PortNumber)?如何获取web-API中的域名/ IP名称?

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

我们有diff服务器,例如:000.00.000:8080(ipname:portnumber),111.11.111:8181。

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

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

回答

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类。

+2

'Uri.Authority'将是一个更好的选择,因为它为您处理默认端口。 –

+0

@CoryNelson好点。 –

+0

@ user3629247你必须更好地解释你自己。人们需要知道你想*回答你的问题 - 而不是你*不想要的*。 –

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; 
} 

希望它能帮助。

+0

谢谢......它有帮助 – MustangManiac

+0

这个答案更符合我们的需求(因为我们不知道uri是什么)。 –