RFC 3986 соглашается с RFC 1738 (который он обновляет) в определении запроса как части, следующей за знаком вопроса (?
), и в утверждении, что точка с запятой может использоваться для разделения пар параметр-значение ", применимых к сегмент».
В проспекте URI (единственный случай, указанный в RFC 1738, где используется точка с запятой), точки с запятой указывают параметр и значение параметра в пути URI - не запрос.
HTTP URI действительно используют точки с запятой в своих запросах, но только после ?
, например http://example.net/search?q=something;page=2
. К сожалению, фактическое использование никогда полностью не заменяло символ &
для этой функции, и оно плохо поддерживается серверным кодом (включая ASP.NET), что ограничивает возможности клиентского кода принимать его (почти ни один браузер не делает) .
Тем не менее, в таких случаях объект .NET Uri правильно идентифицирует только ту часть, которая следует за ?
в качестве запроса, включая точки с запятой, если они присутствуют. Его поведение правильное.