2014-05-22 38 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是什麼)。 –