Я пытаюсь добавить строку запроса в конце URL для управления гиперссылкой следующим образом
HyperLink testLink = new HyperLink();
testLink.NavigateUrl = "http://www.example.com" + "?siteId=asd343s32kj343dce";
Но когда это представляется в браузере, он отображается как http://www.example.com/?siteId=asd343s32kj343dce
(/
символ после .com
).
И если testLink.NavigateUrl = "http://www.example.com/abc.aspx" + "?siteId=asd343s32kj343dce";
Затем ссылка представляется правильно как http://www.abcd.com/abc.aspx?siteId=asd343s32kj343dce
(Никакие дополнительные символы).
Я пропускаю какую-либо вещь? Совет.
Спасибо, Krishna.
Браузер исправляет URL за вас, предполагая, что после имени домена должна быть косая черта. У вас могут возникнуть проблемы с браузерами, которые этого не делают, поэтому вам следует исправить URL-адрес на:
testLink.NavigateUrl = "http://www.abcd.com/" + "?siteId=asd343s32kj343dce";
Причина, по которой после имени домена должна стоять косая черта, заключается в том, что само имя домена не может быть ресурсом. Имя домена просто указывает веб-сайт, в URL-адресе должно быть что-то, что указывает на ресурс на этом сайте, а косая черта указывает страницу по умолчанию в корневой папке сайта.
это нормально, / говорят о том, что доменное имя закончилось и вы теперь находитесь внутри структуры сайта (в данном случае корневой контекст).
второе нормально, потому что abc.aspx - это веб-страница, и она может принимать строку запроса. домен не может принимать строку запроса.
Хотя http://example.com?query
является действительным URI. нормализация HTTP URI утверждает, что http://example.com?query
и http://example.com/?query
равны:
[...] поскольку схема "http" использует авторитетный компонент, имеет порт по умолчанию "80" и определяет пустой путь как эквивалент "/", следующие четыре URI эквивалентны:
http://example.com http://example.com/ http://example.com:/ http://example.com:80/
В общем случае URI, использующий общий синтаксис для полномочий с пустым путем, должен быть нормализован до пути "/".