C# 每次调用Angular 7应用程序时,对Web API的调用都会越来越慢

C# 每次调用Angular 7应用程序时,对Web API的调用都会越来越慢,c#,angular,typescript,asp.net-web-api,asp.net-core,C#,Angular,Typescript,Asp.net Web Api,Asp.net Core,我的Angular c应用程序调用web API并点击存储的进程。应用程序的C部分执行速度很快,但每次调用“内容下载”都会越来越慢 我有一个调用web API的Angular服务 getInvestorsToFunds(params): Observable<InvestorToFund[]> { let body = JSON.stringify({ params }); return this.http.post<InvestorToFund[]&g

我的Angular c应用程序调用web API并点击存储的进程。应用程序的C部分执行速度很快,但每次调用“内容下载”都会越来越慢

我有一个调用web API的Angular服务

getInvestorsToFunds(params): Observable<InvestorToFund[]> {  
    let body = JSON.stringify({ params });  
    return this.http.post<InvestorToFund[]>(this.baseUrl + 'api/Investor/getInvestorsToFunds', body)   
     .pipe(catchError(this.handleError));
 }
你知道为什么每次通话都越来越慢吗

你知道为什么每次通话都越来越慢吗

您看到的时间是后端响应时间。后端的速度越来越慢,对前端代码的任何更改都不会加快速度

修理
修复后端好的,我已经找到了问题的症结所在,我将为任何面临同样问题的可怜灵魂发布我的答案

我阅读了内存泄漏和用于拍摄快照的Chrome工具。的确,随着时间的推移,我的内存使用量随着每次点击页面而增加。这意味着我的应用程序可用内存减少,从而限制了API的数据输入

原来是我的一个插件引起了一个问题-。我在版本6上-当我更新到版本7时,无论我点击了多少页,每次都会在大约3秒钟内停止内存泄漏和执行API调用

有用的文章


这不是内存泄漏。您需要取消订阅

class A implements OnDestroy {
    protected ngUnsubscribe: Subject<void> = new Subject<void>();

    ngOnDestroy() {
        this.ngUnsubscribe.next();
        this.ngUnsubscribe.complete();
    }
这样,当您离开某个组件时,将运行Ngondestory,并从内存中清除所有订阅


另外,我刚开始的时候也有同样的问题。实施后没有问题,一切都很顺利。

我不这么认为。当获取所有数据时,我在控制器上设置了一个断点。每次都不到一秒钟。我单击“继续”,然后开始从服务器向客户端获取7MB数据的缓慢过程。这个问题是发生在您的开发环境中还是WebApi在prod env上?@MarkusDeibel它发生在两者上。带有本地SQL Server的本地主机比prod Server慢。在prod Server上,数据被压缩到850kb。但是,随着随后的每次通话,速度也越来越慢。开始时间为2秒,但几次呼叫后最长为10秒。令人沮丧的!如果您确定问题是在后端,为什么我们有角度代码?也许你不太确定?因此,您应该在控制器上而不是在客户端API上测量定时:只发送一个http请求?如果是,那么也许你可以删除forkJoin。你真的需要7MB的数据吗?即使是第一个电话也太慢了。为什么需要这么多数据,为什么要重复调用同一个控制器方法?aI在我的控制器上设置了一个断点,而存储的进程正在快速执行并返回数据。我确信这是从服务器到客户端的数据传输。b还有其他请求,为简单起见,请删除。在某些组件上,它本身不是在forkjoin中调用的。这是一个金融应用程序,我需要新的数据,因为它可以改变。我也许可以减少数量,但我希望有人能知道为什么会发生这种情况。天气好的时候,它会在3秒钟内第一次呼叫时返回数据。我可以接受。我只是好奇为什么每次通话都会慢下来。嗨,我和ng9有点不对劲,还不能找出原因,是移除插件帮你修复了还是内存泄漏?
class A implements OnDestroy {
    protected ngUnsubscribe: Subject<void> = new Subject<void>();

    ngOnDestroy() {
        this.ngUnsubscribe.next();
        this.ngUnsubscribe.complete();
    }
  this.subscription.takeUntil( this.ngUnsubscribe ).subscribe( _ => _ );