Это странно.
У меня есть угловое приложение из проекта .NET MVC.Когда я делаю запрос к бэкэнду и завершаю ответ, страница обновляется.Это происходит только в Chrome.
Вот странные варианты, которые я вызвал:
1) Обслуживание приложения в Chrome, полный запрос, страница обновлений.
2) Обслуживание приложения в Chrome,открыть FF для localhost (чтобы одна и та же страница была открыта в двух браузерах), вызвать запрос в FF, запрос завершен.FF не перезапускается, но вкладка Chrome делает.
3) Служите приложение в FF, запрос не обновляет страницу.Откройте chrome для localhost, сделайте запрос из FF или Chrome, страница обновится.
При попадании файла .NET-маршрут просто отвечает JsonResult.Это происходит последовательно после того, как завершенный запрос попадает в подписку.Вот некоторый соответствующий код:
// component
this.myService.uploadFile(formGroup, this.Id).subscribe(result =>
{
console.log(result);
});
// service
public uploadFile(form: FormGroup, id: number) {
const options = {
reportProgress: true,
};
const file: File = form.get('file').value;
const formData = new FormData();
formData.append('File', file, file.name);
formData.append('Id', id.toString());
const request = new HttpRequest('POST', '/file', formData, options);
return this.http.request(request)
.pipe<HttpEvent<any>>(
map((event) => {
return this.updateProgress(event, form);
}),
last()
);
}
Я использую этот точно такой же формат в другом месте приложения для другого компонента загрузки файлов, который имеет другие требования, и у меня нет проблем.
Я знаю только достаточно.NET быть опасным, и я в первую очередь разработчик SPA.Если вам нужна дополнительная информация о конфигурации .NET, просто спросите.Мне бы очень хотелось отследить это.
ОБНОВЛЕНИЕ: я обнаружил эту проблему GitHub , которая описывает подобное событие только в Chrome.Я добавил return false
и $event.preventDefault()
как в конец функции upload()
(которая вызывается событием (click)
в шаблоне), так и в конце области подписки.
Я потерян.