如何获取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}"
答案 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;
}
希望它有所帮助。