Ich bin auf eine interessante Situation gestoßen, in der ich NRE
von Uri.TryCreate
Methode bekomme, wenn es false
zurückgeben soll.Warum wirft Uri.TryCreate NRE, wenn die URL türkisches Zeichen enthält?
können Sie das Problem wie unten reproduzieren:
Uri url;
if (Uri.TryCreate("http:Ç", UriKind.RelativeOrAbsolute, out url))
{
Console.WriteLine("success");
}
Ich denke, es während des Parse ist versagt, aber wenn ich "http:A"
zum Beispiel versuchen, es gibt true
und parst sie als relative URL. Auch wenn es bei der Analyse fehlschlägt, sollte es einfach false
zurückgeben, wie ich verstehe, was könnte das Problem hier sein? Dies scheint ein Fehler in der Implementierung zu sein, da in der Dokumentation keine Ausnahme für diese Methode erwähnt wird.
Der Fehler tritt in .NET 4.6.1 aber nicht 4.0
Ihr Beispiel funktioniert für mich in LinqPad. Vielleicht UriKind.Absolute verwenden? Siehe auch http://stackoverflow.com/questions/4161247/uri-trycreate-returns-true-for-any-string-value – Greg
@Greg in meinem Fall, obwohl es eine NullReferenceException in Uri.CreateUriInfo auslöst. Welche .NET Version hast du für den Test verwendet? –
@Greg vergessen zu erwähnen .net Version, könnte verwandt sein –