Получите доступ к службе бритвы в событии, и я получаю сообщение «Невозможно получить доступ к удаленному объекту». - PullRequest
0 голосов
/ 28 мая 2020

Кто-нибудь знает, как добраться до услуги, с события, в другой услуге? (приложение razor page)

Когда я это делаю, я получаю сообщение «Невозможно получить доступ к удаленному объекту».

Добавление служб в Startup.cs

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<DbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
        services.AddScoped<IDataService, DataService>();
        services.AddScoped<IMqttService, MqttService>();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IMqttService mqttService)
    {
        ,,,
        mqttService.SubscribeEvents();
        ,,,
    }

In DataService.cs

    private readonly DbContext _context;

    public DataService(DbContext context)
    {
        _context = context;
    }

In MqttService.cs

    public static IDataService DataService { get; set; }

    public MqttService(IDataService dataService)
    {
        DataService = dataService;
    }

    public void SubscribeEvents()
    {
        ,,,
        client.MqttMsgPublishReceived += client_MqttMsgPublishReceived;
        ,,,
    }

    public void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
    {
        // Here comes the "System.ObjectDisposedException: 'Cannot access a disposed object." when I get an event
        DataService.SaveMessage(Encoding.Default.GetString(e.Message));           
    }

Что я делаю не так?

Другое дело. Как я смогу получить доступ к этим службам из метода в библиотечном проекте?

...