Znalazłem interesującą sytuację, w której otrzymuję NRE
z metody Uri.TryCreate
, kiedy ma powrócić false
.Dlaczego funkcja Uri.TryCreate zgłasza NRE, gdy adres URL zawiera znaki tureckie?
można odtworzyć problem jak poniżej:
Uri url;
if (Uri.TryCreate("http:Ç", UriKind.RelativeOrAbsolute, out url))
{
Console.WriteLine("success");
}
Myślę, że w przypadku braku podczas parsowania, ale gdy próbuję "http:A"
na przykład, zwraca true
i przetwarza je jako względny adres URL. Nawet jeśli nie powiedzie się, to po prostu powinien wrócić false
jak rozumiem, jaki może być problem? Wygląda to na błąd w implementacji, ponieważ dokumentacja nie wspomina o żadnym wyjątku w tej metodzie.
Błąd występuje w .NET 4.6.1 ale nie 4,0
Twój przykład działa dla mnie w LinqPad. Może użyć UriKind.Absolute? Zobacz także http://stackoverflow.com/questions/4161247/uri-trycreate-returns-true-for-any-string-value – Greg
@Greg w moim przypadku, chociaż generuje wyjątek NullReferenceException w Uri.CreateUriInfo. Którą wersję .NET użyłeś do testu? –
@Greg zapomnij wspomnieć o wersji .net, może być powiązany –