http://www.ohchr.org。 Uri parses string it exercises someization on the content, such as reduction-casing the plan and Hostname. 它还将每一条路段的路段隔开。 后一种情况对开放式登记系统的申请来说是致命的,因为一些开放式登记器(如雅虎发来的)包含有密码的路径部分,可能随着时间的推移而结束。
www.un.org/Depts/DGACM/index_spanish.htm 我怎么能够区分Uri阶级的这种周期行为?
利用<代码>UriParser.Register登记我自己的计划,先用<代码>登记。 GenericUriParserOptions.DontCompressPath 避免时间过长,避免了开放式国际也不受欢迎的其他一些行动。 但是,我无法为诸如吉大港山区和高关税同盟等现有计划登记新的教区,我必须这样做。
另一种做法 我试图登记我自己的新计划,并拟订习惯教程,将该计划改成标准吉大港定居计划,作为教区的一部分:
public class MyUriParser : GenericUriParser
{
private string actualScheme;
public MyUriParser(string actualScheme)
: base(GenericUriParserOptions.DontCompressPath)
{
this.actualScheme = actualScheme.ToLowerInvariant();
}
protected override string GetComponents(Uri uri, UriComponents components, UriFormat format)
{
string result = base.GetComponents(uri, components, format);
// Substitute our actual desired scheme in the string if it s in there.
if ((components & UriComponents.Scheme) != 0)
{
string registeredScheme = base.GetComponents(uri, UriComponents.Scheme, format);
result = this.actualScheme + result.Substring(registeredScheme.Length);
}
return result;
}
}
class Program
{
static void Main(string[] args)
{
UriParser.Register(new MyUriParser("http"), "httpx", 80);
UriParser.Register(new MyUriParser("https"), "httpsx", 443);
Uri z = new Uri("httpsx://me.yahoo.com/b./c.#adf");
var req = (HttpWebRequest)WebRequest.Create(z);
req.GetResponse();
}
}
这实际上a 几乎。 The Uri
instance reports https not from httpsx where—less the Uri.Scheme property se. 这在你通过<条码>时就是一个问题。 www.un.org/Depts/DGACM/index_french.htm HttpWebRequest to sent a request to this address. 很显然,它检查了该计划的财产,并不承认它为https,因为它只是向443个港口发送了平原,而不是SSL。
我对以下任何解决办法感到高兴:
- Preserves trailing periods in path segments in
Uri.Path
- Includes these periods in outgoing HTTP requests.
- Ideally works with under ASP.NET medium trust (but not absolutely necessary).