Backend вернул код 0, тело было: [объект ProgressEvent] - Angular 5 - PullRequest
0 голосов
/ 23 января 2020

В моем angular application я вызываю API, для ответа которого требуется более 2 минут , но через 2 минуты angular выдает следующую ошибку;

Доступ к XMLHttpRequest из источника был заблокирован политикой CORS: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».

Внутренний код возвратил 0, тело было: [object ProgressEvent]

Не удалось загрузить ресурс: net :: ERR_FAILED

Я испробовал все возможные решения, которые я нашел в inte rnet и SO, как;

  1. добавление тайм-аута на сервисный вызов;

    return this.httpClient.post<ViewModelResponse>(this.baseUrl + this._getMetaDataUrl, { headers: this.configurations.getHeaderWithAuth() }).timeout(300000);

  2. добавление тайм-аута с трубой

    return this.httpClient.post<ViewModelResponse>(this.baseUrl + this._getMetaDataUrl, { headers: this.configurations.getHeaderWithAuth() }).pipe(timeout(300000));

  3. Реализует HttpInterceptor , следующий за этим ответом

  4. Добавлен таймаут в заголовках "timeout": ${300000}

  5. Увеличено Тайм-аут сервера IIS до 20 минут.

  6. Люди также предлагали изменения в файле прокси, но у меня нет файла прокси ..

Но у меня ничего не получалось .. все эти решения не сработали, как только ответ API превысил 2 минуты. Я использую dotnet core в бэкэнде, и он каждый раз возвращает правильный ответ.

В случае Pipe (timeout ()) вызов был в бэкэнде, но angular выдает ошибку, что ответ нулевой

Буду признателен за любую помощь.

Ответы [ 2 ]

0 голосов
/ 28 января 2020

После долгих поисков я наконец нашел свою проблему. И, как все говорили, это был бэкэнд-сервер (Do tnet Core) Проблема.

Установка RequestTimeout = "00:20:00" для тега aspNetCore в web.config и развертывание сайта решили мою проблему.

Эта статья содержит подробности добавления таймаута в базовом приложении do tnet.

0 голосов
/ 23 января 2020

У меня была такая же проблема несколько дней go. Проблема определенно задняя часть. Вы должны добавить директиву в вашем ConfigureServices внутри вашего Startup класса. Здесь - документация Microsoft, за которой я следовал, чтобы исправить ошибку. Если использование точного URL не работает, вы должны использовать политику allorigin, например: builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...