Есть ли способ проверки URL-адресов в .NET, ASP.Net или ASP.Net MVC?Есть ли проверка подлинности URL на .Net?
ответ
Вы можете использовать Uri.TryCreate
для проверки в URL:
public bool IsValidUri(string uri)
{
Uri validatedUri;
return Uri.TryCreate(uri, UriKind.RelativeOrAbsolute, out validatedUri);
}
Комментарии предполагают, что TryCreate
просто перемещает обработку на один уровень вниз исключение. Однако я проверил исходный код и обнаружил, что это не так. Внутри TryCreate
нет try/catch, он использует настраиваемый парсер, который не должен бросать.
static bool IsValidUri(string urlString) {
try {
new Uri(urlString);
return true;
} catch {
return false;
}
}
См. Комментарий относительно производительности на ответе диво –
Более быстрый способ (возможно), чем использование функции try/catch, заключается в использовании Regex. Если вам нужно было проверять 1000 URL-адресов, перехватывание исключения несколько раз было бы медленным.
a link to sample Regex - используйте Google, чтобы найти больше.
как-то я сомневаюсь в этом. регулярные выражения, даже скомпилированные, не особенно быстры. даже если бы вы могли написать то, что было точным. – Kris
Это будет быстрее, но намного сложнее получить право. –
Крис - возможно, вы не понимаете, как могут быть дорогостоящие исключения исключения - они очень медленны, если они выполняются в большой петле. – RichardOD
Вы можете использовать Uri.IsWellFormedUriString, нет необходимости, чтобы создать свою собственную функцию для этого:
public static bool IsWellFormedUriString(string uriString, uriKind uriKind);
Где uriKind может быть:
UriKind.RelativeOrAbsolute
UriKind.Absolute
UriKind.Relative
Для получения дополнительной информации см: http://msdn.microsoft.com/en-us/library/system.uri.iswellformeduristring.aspx
Это не работает во многих ситуациях – Farshid
Ответы, предоставленные таким образом, не проверяют схему, позволяя использовать все виды нежелательного ввода, которые могут сделать вас уязвимыми для javascript-инъекций (см. Комментарий TheCloudle ssSky).
URI - это уникальная идентификация объекта. «C: \ Test» является допустимым URI.
В моем проекте я использовал следующий код:
/// <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;
}
Определить, какие схемы позволите и изменить код соответственно.
+1, Это лучший ответ, а также уникальный, который действительно отвечает на вопрос «как проверить URL», ** URL ** !. – ElektroStudios
- 1. Проверка подлинности Phantom.js .NET
- 2. Есть ли проверка подлинности PHP?
- 3. Проверка подлинности URL-адреса изображения
- 4. Требуется ли проверка подлинности в виде .Net?
- 5. Проверка подлинности проверена. NET build
- 6. Есть ли система проверки подлинности для .NET?
- 7. .net и проверка подлинности Google
- 8. Проверка подлинности Joomla Обратный URL
- 9. Проверка подлинности для. NET с использованием Perl
- 10. Проверка подлинности Django из .NET. Приложение
- 11. Проверка подлинности на Facebook
- 12. Проверка подлинности подписи при выполнении приложения .NET
- 13. Проверка подлинности .NET MVC - отладка IsInRole()?
- 14. Проверка подлинности на Symfony2
- 15. Проверка подлинности подписи Facebook, код .NET
- 16. C# .net - проверка подлинности, истекающая досрочно
- 17. Безопасна ли проверка подлинности на стороне клиента Facebook?
- 18. Есть ли более безопасные средства аутентификации, чем проверка подлинности форм?
- 19. Проверка подлинности калитки и сервлетов - есть ли лучший способ?
- 20. проверка подлинности IIS 6.0
- 21. Проверка подлинности на основе утверждений от SharePoint до ASP .NET
- 22. Есть ли встроенный класс URL в .Net?
- 23. Проверка подлинности на основе AngularJS JWT
- 24. Проверка подлинности CDA на MasterCard
- 25. проверка подлинности Windows на Sharepoint
- 26. Проверка подлинности на основе брандмауэра
- 27. Проверка подлинности
- 28. Проверка формы Проверка подлинности на стороне клиента
- 29. Проверка подлинности Gerrit на ActiveDirectory
- 30. WCF REST Проверка подлинности
Это лучше, чем предполагаемые реализации try/catch. – RichardOD
В случае, если вы на 2.0+, конечно ... –
Хотя это просто хоронят попытку/поймать еще один уровень вниз, где вам не нужно его видеть. –