¿Existe algún método para validar URL en .Net, ASP.Net o ASP.Net MVC?¿Hay un validador de URL en .Net?
Respuesta
Puede utilizar el Uri.TryCreate
para validar una dirección URL:
public bool IsValidUri(string uri)
{
Uri validatedUri;
return Uri.TryCreate(uri, UriKind.RelativeOrAbsolute, out validatedUri);
}
Los comentarios sugieren que TryCreate
sólo se mueve el manejo de un nivel más abajo excepción. Sin embargo, revisé el código fuente y encontré que este no es el caso. No hay try/catch dentro de TryCreate
, usa un analizador personalizado que no debe arrojarse.
static bool IsValidUri(string urlString) {
try {
new Uri(urlString);
return true;
} catch {
return false;
}
}
Ver el comentario sobre el rendimiento en la respuesta de Divo –
Una manera más rápida (probablemente) que usar la funcionalidad try/catch sería usar Regex. Si tuviera que validar miles de URL, la captura de la excepción varias veces sería lenta.
Aquí está a link to sample Regex - use Google para encontrar más.
de alguna manera lo dudo. Las expresiones regulares, incluso compiladas, no son especialmente rápidas. incluso si alguna vez pudieras escribir uno que fuera exacto. – Kris
Esto sería más rápido, pero mucho más difícil de hacer bien. –
Kris: tal vez no comprenda cuán costosas pueden ser las excepciones de lanzamiento, son muy lentas si se hacen en un gran ciclo. – RichardOD
Puede utilizar Uri.IsWellFormedUriString, no hay necesidad de crear su propia función para la que:
public static bool IsWellFormedUriString(string uriString, uriKind uriKind);
Dónde uriKind puede ser:
UriKind.RelativeOrAbsolute
UriKind.Absolute
UriKind.Relative
Para más información ver: http://msdn.microsoft.com/en-us/library/system.uri.iswellformeduristring.aspx
Esto no funciona en muchas situaciones – Farshid
Las respuestas proporcionadas hasta el momento no comprueban el esquema, lo que permite todo tipo de entradas no deseadas, lo que podría hacerte vulnerable a la inyección de JavaScript (ver el comentario de TheCloudle). ssSky).
Un URI es solo una identificación única de un objeto. "C: \ Test" es un URI válido.
En mi proyecto he utilizado el siguiente código:
/// <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;
}
Definir qué esquemas va a permitir y cambiar el código en consecuencia.
+1, esta es la mejor respuesta y también la única que realmente responde a la pregunta "cómo validar una URL", una ** URL ** !. – ElektroStudios
- 1. ¿Hay un validador de PHP?
- 2. ¿Hay un validador de HTML incorporado en cualquier navegador importante?
- 3. ¿Hay un validador Javascript X/HTML puro?
- 4. Un validador HTML en Java
- 5. Validador de Hibernate: aplicar condicionalmente el validador
- 6. autowiring un servicio en un validador
- 7. ¿Hay un equivalente de JMS en .NET?
- 8. ¿Hay un equivalente de "gettimeofday" en .NET
- 9. validador WSDL
- 10. Extracción de un validador con jQuery
- 11. ¿Cómo crear un validador personalizado en smartGWT?
- 12. ¿Hay un objeto OpenFileOrFolderDialog en .NET?
- 13. ¿Hay un compilador Ruby .NET?
- 14. ¿Hay un GUID.TryParse() en .NET 3.5?
- 15. ¿Hay un método zip en .Net?
- 16. Email Validador de SMTP
- 17. Reescritura de URL en .Net MVC
- 18. ¿Cómo pasar una url como un parámetro url cuando hay un signo de interrogación en él?
- 19. .htaccess: Cómo "Especificar un validador de caché"?
- 20. ¿VS2010 tiene un validador de esquema xml?
- 21. Cómo recuperar el validador de un formulario
- 22. Verifique si hay un enlace válido (URL)
- 23. Validador personalizado de ASP.NET + WebMethod + jQuery
- 24. ¿Hay ESB de .NET?
- 25. Compruebe si la URL es un torrente en C# .NET
- 26. Cómo inyectar un objeto en una clase de validador WCF
- 27. En un corrector de url-pattern web.xml, ¿hay alguna forma de excluir URL?
- 28. url semántica con puntos en .net
- 29. Validador de WCF personalizado: cómo inicializar un objeto "Usuario" del validador personalizado
- 30. ¿Por qué hay URL en espacios de nombres XML?
Esto es mejor que las implementaciones try/catch sugeridas. – RichardOD
En caso de que tenga 2.0+, por supuesto ... –
Aunque solo está enterrando el try/catch un nivel más abajo, donde no tiene que verlo. –