如何设置:services.AddSingleton <ApiResponseService>;在Asp.net项目中的“服务器启动-直到“无限””生命周期

如何解决如何设置:services.AddSingleton <ApiResponseService>;在Asp.net项目中的“服务器启动-直到“无限””生命周期

我不确定问题是否出在我这一边(我的代码),或者服务器设置是否引起了不良行为。 我使用Blazor框架制作了一个Asp.net单页项目。与MVC Asp.net类似。在我的Blazor项目中,我在startup.cs文件中设置了依赖项注入服务。并使其寿命达到了辛格尔顿的状态(据我了解,每个服务器的一个对象实例开始达到“无限”状态。)

在该服务中,我存储了Api调用的响应,以便数据永远存储在“永远的内存”中。 这就是理论(确切的行为)。 实际上,我的数据还可以。我从不同的IP地址/ PC / Mobile进行了检查/查找,一切都很好,向用户显示了Api数据。但是数据在一定时间后会丢失,而不是“永远”呆在那里(我们说的只是几分钟->数据丢失)。可能是我的提供者由于不活动而重置了我的Webside /服务器?还是我在代码中犯了一个导致损失的错误?我认为只要服务在服务器上运行,singelton服务就可以持续下去。 我在这里尝试提供正确的代码位:

Asp.net Core Blazor ServerSide项目:

文件-> Startup.cs

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddRazorPages();
        services.AddServerSideBlazor();
        services.AddSingleton<ApiResponseService>();
    }

file->我的ApiResponseService类

   public class ApiResponseService
{
    //--NowCast
    public List<climaCellNowCast> LstclimaCellNowCasts { get; set; }
    //create a HttpClient with the correct apiCallStringApikey etc
    public ApiCallCreateClient NowCastHttp { get; } = new ApiCallCreateClient(Const.NowCastApiKeyCallString);
    
    //...
    
    //--Update Methode
    public async Task<bool> UpdateWeatherData()
    {
    LstclimaCellNowCasts = await this.GetWeatherDataApiAsync<climaCellNowCast>(this.NowCastHttp);
        return updateOkay;
    }

    public async Task<List<T>> GetWeatherDataApiAsync<T>(ApiCallCreateClient clientT)
    {
        List<T> climaCell = new List<T>();

        using HttpResponseMessage response = await 
            clientT.Client.GetAsync(clientT.Client.BaseAddress);
            if (response.IsSuccessstatusCode)
            {
                clientT.MyApiJsonResponse = await response.Content.ReadAsstringAsync();
                // nugetPacket ->  Newtonsoft.Json
                climaCell = JsonConvert.DeserializeObject<List<T>>(clientT.MyApiJsonResponse);
             }
        return climaCell;
    }
}

file-> blazor组件//网络端//

@inject ApiResponseService apiCall;
//...
@apiCall.doSomething //show the Api response data

//...
@code{
 protected override async void OnInitialized()
 {
     UpdateSuccessfull = await apiCall.UpdateWeatherData();
     this.StateHasChanged();
 }

 bool UpdateSuccessfull;

 private async Task GetWeatherData()
 {
    UpdateSuccessfull = await apiCall.UpdateWeatherData();
 }
}

有没有办法让我的api响应在一段时间后不会“丢失”? ^ nogood

解决方法

我的提供者回答了我的电子邮件:...默认情况下,applicationpool空闲时间设置为5分钟。 ...这意味着我的singelton寿命为5分钟。 ;)至少我现在知道发生了什么

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?