2009-05-29 22 views

cevap

44

Bir URL doğrulamak için Uri.TryCreate kullanabilirsiniz:

public bool IsValidUri(string uri) 
{ 
    Uri validatedUri; 
    return Uri.TryCreate(uri, UriKind.RelativeOrAbsolute, out validatedUri); 
} 

comments TryCreate sadece bir seviye aşağı taşıma istisna taşır düşündürmektedir. Ancak kaynak kodu kontrol ettim ve durumun böyle olmadığını gördüm. TryCreate içerisinde deneme/yakalama yok, atmaması gereken özel bir ayrıştırıcı kullanıyor.

+0

Bu, önerilen deneme/yakalama uygulamalarından daha iyidir. – RichardOD

+0

Eğer 2.0 + 'da olmanız durumunda, tabii ki ... –

+1

Sadece bir kez daha deneyin ve onu görmek zorunda kalmamanız için deneyin. –

0
static bool IsValidUri(string urlString) { 
    try { 
     new Uri(urlString); 
     return true; 
    } catch { 
     return false; 
    } 
} 
+0

Divan'ın performansıyla ilgili yoruma bakın –

0

Deneme/yakalama işlevini kullanmaktan daha hızlı bir yol (muhtemelen) Regex kullanmak olacaktır. Birden çok kez istisnai yakalayan 1000’lik URL’leri doğrulamak zorunda kalırsanız yavaş olur.

İşte a link to sample Regex - Daha fazla bilgi için Google'ı kullanın.

+0

bir şekilde buna şüphem var. düzenli olarak derlenmiş olan regex'ler özellikle hızlı değildir. Doğru olan bir tane bile yazabilseniz bile. – Kris

+0

Bu daha hızlı olurdu, ancak doğru olması çok daha zor. –

+1

Kris- belki büyük bir döngüde yapılırsa ne kadar pahalı istisnalar olabileceğini anlamıyorsunuz - çok yavaşlar. – RichardOD

30

Bu şekilde verilen cevaplar, javascript enjeksiyonu için sizi savunmasız bırakabilecek her türlü istenmeyen girişe izin veren bir şema olup olmadığını kontrol etmemektedir (TheCloudle'un görüşüne bakınız). ssSky).

URI, yalnızca bir nesnenin benzersiz bir tanımlamasıdır. "C: \ Test" geçerli bir URI'dir.

/// <summary> 
/// Validate a URL. 
/// </summary> 
/// <param name="url"></param> 
/// <returns></returns> 
private bool ValidUrl(string url) 
{ 
    Uri validatedUri; 

    if (Uri.TryCreate(url, UriKind.Absolute, out validatedUri)) //.NET URI validation. 
    { 
     //If true: validatedUri contains a valid Uri. Check for the scheme in addition. 
     return (validatedUri.Scheme == Uri.UriSchemeHttp || validatedUri.Scheme == Uri.UriSchemeHttps); 
    } 
    return false; 
} 

sen sağlayacak olan düzenleri tanımlamak ve buna göre kodunu değiştirmek: Projemde

ben aşağıdaki kodu kullandım.

+1

+1, Bu en iyi yanıt ve aynı zamanda "bir URL'nin nasıl doğrulanacağı" sorusunu yanıtlayan benzersiz bir URL'dir, ** URL ** !. – ElektroStudios

İlgili konular