这很奇怪。
我有一个从.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配置的更多信息,请询问。我真的很想对此进行追踪。
更新:我发现this GitHub issue仅在chrome中描述了类似事件。我在return false
函数的末尾(模板中$event.preventDefault()
事件调用的那个)和订阅范围的末尾都添加了upload()
和(click)
。
我迷路了。