Проверить, что строка является относительным URL не работает

1

Я пытаюсь проверить, что строка, представляющая 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-адреса, как я могу проверить, что он действительно относительный, и просто получить путь и запрос, если пользователь также передал домен?

  • 0
    это достаточно легко проверить, если он относительный, но получить только путь и запрос URL, который может содержать домен, немного сложнее. Как бы я поступил так?
  • 0
    Не могли бы вы включить некоторые примеры входных и ожидаемых результатов? Если путь относительный, сколько из пути должно быть возвращено?
Теги:
uri

1 ответ

0

Путь, возвращаемый PathAndQuery, всегда является абсолютным путем, поэтому он не работает для относительных путей.

  • 1
    Но вопрос в том, как обеспечить абсолютный путь перед использованием PathAndQuery . Я предполагаю, что IsAbsoluteUri помогает.
  • 0
    Это никогда не будет абсолютным. Вся цель состоит в том, чтобы разрешить только относительные URL.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню