Я пытаюсь проверить, что строка, представляющая url, относительна, но кажется, что Uri.TryCreate()
будет принимать любой url без протокола как относительный (то есть: www.domain.com/something/else.aspx). Но мне нужно только /something/else.aspx/
Например, эта тестовая строка всегда будет uri.PathAndQuery
исключение при попытке получить uri.PathAndQuery
в строке 9. Даже если TryCreate()
возвращает true.
string test = "/something/else.aspx";
bool isValid;
var url = getPathAndQuery(test, out isValid);
private string getPathAndQuery(string url, out bool isValid) {
Uri uri;
isValid = Uri.TryCreate(url, UriKind.Relative, out uri);
try {
return isValid ? uri.PathAndQuery : string.Empty;
} catch (Exception e) {
isValid = false;
return string.Empty;
}
}
Пример ввода/вывода:
input: /something/else.aspx ==> output: /something/else.aspx
input: www.domain.com/something/else.aspx ==> вывод: /something/else.aspx
input: http://www.domain.com/something/else.aspx ==> ouput: string.Empty
Учитывая относительный путь URL-адреса, как я могу проверить, что он действительно относительный, и просто получить путь и запрос, если пользователь также передал домен?
Путь, возвращаемый PathAndQuery
, всегда является абсолютным путем, поэтому он не работает для относительных путей.
PathAndQuery
. Я предполагаю, что IsAbsoluteUri
помогает.