HttpSelfHostServer возвращает 400 недействительных URL-адресов для действительных URL

У нас есть служба Windows, использующая HttpSelfHostServer, и она работает большую часть времени, однако недавно мы обнаружили ошибку, при которой "длинные" URL-адреса всегда выбрасывались как недействительные.

Пример "хорошего" URL: http://localhost:35353/api/files/ZmlsZTovLy9DOi9Vc2Vycy9kYXZpZC9Eb3dubG9hZHMvU2FtcGxlIERvY3VtZW50cy9BWklQUEVSXzAwMDc0OTUuaHRt/permissions

Пример недействительного URL:http://localhost:35353/api/files/ZmlsZTovLy9DOi9Vc2Vycy9kYXZpZC9Eb3dubG9hZHMvU2FtcGxlIERvY3VtZW50cy9BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjEyMzQ1Njc4OTBBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjEyMzQ1Njc4OTAvQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoxMjM0NTY3ODkwL0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMTIzNDU2Nzg5MEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMTIzNDU2Nzg5MC50eHQ=/permissions

Я заметил, что когда зашифрованная строка {file} между /files/{file}/permissions превышает 260 символов, происходит сбой, но когда она меньше, она работает. 260 жесткий лимит или есть ли способ увеличить это? Спасибо за помощь!

3 ответа

Решение

Похоже, что MAX_PATH используется для ограничения URL-адресов - это ограничение файловой системы, которое, я думаю, было встроено в сам хостинг-сервер.

См. "Ограничение максимальной длины пути" здесь: http://msdn.microsoft.com/en-us/library/aa365247.aspx

У меня нет опыта работы с самостоятельно размещенными API, но это может быть связано с длиной URL-адреса или строки запроса, поэтому вы можете взглянуть на это: запрос превышает настроенный maxQueryStringLength при использовании [Authorize]

Чтобы указать путь расширенной длины, используйте префикс "\\?\". Например,

\\? \ D:\ очень длинный путь

вместо

D:\ путь

Другие вопросы по тегам