Попытка сделать AXIOS.post немного больше среднего для веб-API .NET

Я пытаюсь сделать AXIOS.post в приложении Vue.JS. Кажется, что когда я набираю более 1500 символов, процесс завершается сбоем. То, что я имею в виду под ошибкой, даже не переходит к веб-API. Он идет прямо в область ошибки. Обычно это функция, которая вызывает веб-API .Net, который создает документ MS Word и передает его обратно конечному пользователю.

      let pm = "1234567890,"

Создайте цикл, чтобы добавить pm = pm + pm '200 раз

let updatedData = {        
      memberID: 12345,
      pmids: pm             
  };

  axios({
    method: "post",
    url:         
     "http://localhost:54269/api/DataTable/PostValue",
    params: {
      value: JSON.stringify(updatedData)        
    },  responseType: 'blob' , 
     maxContentLength: Infinity,
     maxBodyLength: Infinity,
     headers: {
      'content-type': 'application/json',         
      'Accept': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
 }
  }).then(response =>{ 
    const url = window.URL.createObjectURL(new Blob([response.data]));
    const link = document.createElement('a');
    link.href = url;
    link.setAttribute('download', 'DataTable4_.docx');
    document.body.appendChild(link);
    link.click();
   }) 
  .catch(err => { 
      if ( err.response ){
      console.info(err.response.data); 
   }
     if ( err.message ){
      console.info("message:  " + err.message); 
   }   
  });      

} ,

Как только PM превысит 1500, я получаю сообщение об ошибке

 POST http://localhost:54269/api/DataTable/PostValue?value=%7B%22memberID%22:12345,%22pmids%22:%2212345,23456,45678%22%7D 500 (Internal Server Error)
dispatchXhrRequest @ xhr.js?e38e:177
xhrAdapter @ xhr.js?e38e:13
dispatchRequest @ dispatchRequest.js?c09c:52
Promise.then (async)
request @ Axios.js?108a:61
wrap @ bind.js?784f:9
saveSwitchValue @ reporterAPI_Unique_PI.vue?5e84:382
create_word_doc_post @ reporterAPI_Unique_PI.vue?5e84:451
toolbarClick @ reporterAPI_Unique_PI.vue?5e84:816
Observer.notify @ observer.js?e8e3:99
Base.trigger @ base.js?3f78:181
GridComponent.trigger @ grid.component.js?9a24:85
Toolbar.toolbarClickHandler @ toolbar.js?3c15:337
Observer.notify @ observer.js?e8e3:99
Base.trigger @ base.js?3f78:181
Toolbar.clickHandler @ toolbar.js?4b00:573
reporterAPI_Unique_PI.vue?5e84:409 
Blob {size: 1151, type: 'application/json'}size: 1151type: "application/json"[[Prototype]]: BlobarrayBuffer: ƒ arrayBuffer()size: (...)slice: ƒ slice()stream: ƒ stream()text: ƒ text()type: (...)constructor: ƒ Blob()Symbol(Symbol.toStringTag): "Blob"get size: ƒ size()get type: ƒ type()[[Prototype]]: Object

Я должен иметь возможность взять достаточное количество данных, использовать JSON.stringify и отправить их на сервер, не так ли? Я не говорю о загрузке гигабайт данных, даже не о мегабайтах. Если кто-то знает какой-то экспертный учебный материал, я готов учиться. Я пробовал Udemy и YouTube, но 99% всех постов Axios — это небольшие образцы. Или да, я также проверил свой локальный сервер IIS и установил для Максимально допустимой длины содержимого значение 10737418241073741824.

и если вы хотите

<System.Web.Http.HttpPost> <System.Web.Http.Route("api/DataTable/PostValue")> Публичная функция PostValue (значение ByVal как строка) как строка 'HttpResponseMessage

Строка для тестирования

Если вы получаете 500, это означает, что ваш серверный код (или, возможно, прокси-сервер между вашим клиентом и сервером) не работает. Не могу сказать вам, что, не видя вашего кода на стороне сервера, но проблема не в Axios.

Nick Bailey 11.05.2022 02:45

Подождите, вы передаете эти данные как параметр запроса? У вас есть данные в параметрах, а не в теле.

Nick Bailey 11.05.2022 02:46
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
22
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваша проблема в том, что вы пытаетесь передать этот большой строковый объект JSON как параметр запроса. IIS имеет жесткое ограничение в 2048 байтов для длины URL-адреса.

Большие объекты данных должны передаваться как часть тела запроса, искомое свойство — data. Дополнительные сведения см. в документации Axios.

Я согласен, и кажется, что AXIOS действительно не рассчитан на более чем 2048 байт. Я пробовал все: от параметров до данных, от сообщений до получения, от json до application/x-www-form-urlencoded, от FormData до всего, что между ними. Если это не AXIOS, это .NET Web API. AJAX и jQUery были намного проще для публикации данных. Ну это моя первая ошибка. Я предполагаю, что Posting отправляет на сервер, а Get тянет. Может записать в файл - загрузить - прочитать - и обработать. Не настоящий профессионал

Bill 11.05.2022 22:08

Какие результаты вы получаете, когда пытаетесь опубликовать данные в формате JSON. Опять же, Axios отлично отправляет ваши запросы, проблемы возникают на вашем сервере.

Nick Bailey 11.05.2022 22:19

У меня есть точка останова прямо на имени контроллера - Public Function PostValue (ByVal value As String) As String, и если обновленные данные меньше 2040, я могу видеть значения в строке и точка останова. Если данные слишком велики, они вообще не попадают в контроллер, а просто поражают обработчик ошибок AXIOS с сообщением: Запрос не выполнен с кодом состояния 404. И он отправляет все данные в строке URL-адреса локальный: 54269/API/DataTable/PostValue?значение={"memberID":12‌​ 345,"pmids":"12345,2‌​3456,45678,12345,...‌​........,23456,45678‌​"}

Bill 12.05.2022 04:43

Хорошо, но что произойдет, если вы отправите его в тело, а не в URL? axios-http.com/docs/post_example. Если вы отправите данные через параметр URL, IIS потерпит неудачу, прежде чем он попадет в ваше приложение. Опять же, проблема не с аксиомами, это отправка данных в качестве параметра запроса и IIS.

Nick Bailey 12.05.2022 05:49

Извините за задержку - я очень ценю вашу помощь. Задержка была с моей стороны, потому что независимо от того, что я делал, я получил ошибку CORS из моего локального. Пришлось развернуть учетную запись AZURE, и она отлично работает с тестовым кодом. Я получил длину строки более 25 КБ, что доказывает, что она работает. Теперь мне нужно решить локальную проблему CORS, чтобы упростить отладку кода. Спасибо

Bill 13.05.2022 17:57

Увеличьте длину — теперь 1 343 447 символов.

Bill 14.05.2022 02:30

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