Ho riscontrato una situazione interessante in cui ricevo il NRE
dal metodo Uri.TryCreate
quando deve restituire false
.Perché Uri.TryCreate genera NRE quando url contiene caratteri turchi?
è possibile riprodurre il problema come di seguito:
Uri url;
if (Uri.TryCreate("http:Ç", UriKind.RelativeOrAbsolute, out url))
{
Console.WriteLine("success");
}
Credo che sia mancata durante il parsing, ma quando provo "http:A"
per esempio, restituisce true
e lo analizza come URL relativo. Anche se fallisce l'analisi dovrebbe restituire solo false
come ho capito, quale potrebbe essere il problema qui? Questo sembra un bug nella documentazione della causa di implementazione non menziona alcuna eccezione su questo metodo.
L'errore si verifica in .NET 4.6.1 ma non 4.0
Il tuo esempio funziona per me in LinqPad. Forse usare UriKind.Absolute? Vedi anche http://stackoverflow.com/questions/4161247/uri-trycreate-returns-true-for-any-string-value – Greg
@Greg nel mio caso sebbene lanci una NullReferenceException in Uri.CreateUriInfo. Quale versione .NET hai usato per il test? –
@Greg dimentica di menzionare la versione .net, potrebbe essere correlata –