Я написал простой сервер с использованием System.Net.HttpListener в C # с помощью следующего кода:
Listener = new HttpListener();
Listener.Prefixes.Add(Prefix);
Listener.Start();
Listener.BeginGetContext(GetContextCallback, null);
Я заметил, что мой сервер возвращает ответ HTTP 400 (неверный запрос) всякий раз, когда URL-адрес, который я отправляю (в HTTP GET), превышает ~ 255 символов. Я провел некоторое исследование по этому вопросу, и похоже, что нет никакого стандарта, хотя большинство браузеров и серверов, по-видимому, обрабатывают как минимум ~ 2000 символов.
Самое смешное, что мой GetContextCallback () никогда даже не вызывается, когда происходит сбой таким образом.
Я действительно хотел бы выяснить, как настроить это для поддержки более 255 символов, кто-нибудь знает, если это возможно?
Спасибо!
Обновление: я обнаружил, что это ограничение не для всего URL, а для отдельного имени каталога. Я предполагаю, что это как-то связано с MAX_PATH, но я точно знаю, что другие серверы могут справиться с этим, и я видел реальные ссылки «в дикой природе», которые имеют имена каталогов более 300 символов (Google, в частности, для ссылок как /extern_js/f/........).
Обновление: я тестирую свой сервер с помощью telnet, используя следующий запрос GET:
GET /013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789/test.html
Host: 10.15.38.80:8008
Accept: */*