您可以使用UriTemplate来解析网址:
我有这个代码在localhost:29001
本地,我将主机设置为特定的Uri
,然后检查它是否是Match
在我的真实代码中,我确实有一行
var absoluteUri = HttpContext.Current.Request.Url.AbsoluteUri;
其中就像这样使用
var match = apiTemplate.Match(host, new Uri(absoluteUri));
但实质上这就是C#运行时代码的样子。
var host = new Uri("http://localhost:29001");
var apiTemplate = new UriTemplate("{api}/{*params}", true);
var match = apiTemplate.Match(host, new Uri("http://localhost:29001/GetQAByDateTime/date/2-15-2017/time/11"));
if (match == null)
throw new ArgumentException();
Console.WriteLine(match.BoundVariables["api"]); // GetQAByDateTime
Console.WriteLine(match.BoundVariables["params"]); // date/2-15-2017/time/11
所以基本上我不想hardcode
host
var host = new Uri("http://localhost:29001");
当然,我可以从HttpContext
获取服务器名称,但有什么意义呢?我不应该检查像
localhost
localhost:290001
https://myserver.com
https://myStagingServer/website
etc..
如何在这些游戏池上进行匹配?
答案 0 :(得分:1)
您可以直接从HttpContext.Current.Request.Url
var uri = HttpContext.Current.Request.Url;
var host = new Uri(uri.Scheme + "://" + x.Authority);
编辑:我应该补充一点,Uri.Host
被避免,因为"与Authority属性不同,此属性值不包括端口号。"