Ответы, предоставленные таким образом, далеко не проверяют схему, допускающую всевозможные нежелательные вводы, которые могут сделать вас уязвимыми для внедрения javascript (см. Комментарий TheCloudlessSky).
URI - это просто уникальная идентификация объекта. «C: \ Test» является допустимым URI.
В своем проекте я использовал следующий код:
/// <summary>
/// Validates a URL.
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
private bool ValidateUrl(string url)
{
Uri validatedUri;
if (Uri.TryCreate(url, UriKind.Absolute, out Uri 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;
}
Определите, какие схемы вы разрешите, и измените код соответствующим образом.