Я использую ServiceStack с MVC4 и получаю 500 ошибок, когда параметры запроса длинны. Я отправляю ProductIds, разделенные запятыми, контроллеру через AJAX. В контроллере у меня есть следующий вызов API-интерфейса servicestack для извлечения данных.ServiceStack запрос дает 500 для большого запроса
ResponseDTO res = restClient.Get(new RequestDTO { ProductIDs = ids});
//ResponseDTO res = restClient.Get(new RequestDTO { ProductIDs = "1234,1235,1236"});
Если я представляю небольшие параметры выше, он отлично работает без ошибок. Но когда строка параметра находится в диапазоне от 1800 символов, он просто не будет работать на линии выше и дает 500 Внутренняя ошибка сервера:
NetworkError: 500 Internal Server Error - http://localhost/Products/GetProducts
Exception Details: ServiceStack.ServiceClient.Web.WebServiceException: Not Found
является ли ограничение на метод GET для размещения большого запроса параметров? Почему это не удается для большого запроса, когда для небольших параметров он успешно вызывает API, извлекает данные с помощью процедуры SQL и отправляет для просмотра правильно. Что я могу рассмотреть, чтобы решить эту проблему? Спасибо!
p.s. когда я отлаживаю через VS2012, я вижу детали исключения. Я вижу сообщение: не найдено и код состояния: 404.
Вы не должны использовать запросы GET с длинными данными. В разных браузерах URL-адреса имеют разные ограничения длины. Некоторые браузеры не поддерживают запросы GET более чем на 2 КБ, которые «приближаются к 1800 символам». Что произойдет, если вы ПОСТ? Это может быть проблемой с ServiceStack, но это маловероятно, так как класс 'string' будет легко обрабатывать 2000 символов. – Scott
Я не могу воспроизвести ошибку. Пожалуйста, разместите свой DTO. Мне удалось отправить строку длиной не менее 13000 символов без использования GET. – Scott
У нас есть методы GET в проектах Services как интерфейс и havent реализованы POST. Поэтому я получаю ошибку «Метод не разрешен». Я постараюсь изменить POST все места и посмотреть, работает ли он. и да, они являются строками и сериализуются при публикации через AJAX json. – user704988