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:\ путь