问题标签 [microsoft.extensions.hosting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - IHostedService 多个实现的最佳实践
我有一个充当网关的应用程序,其中有两个进程,它们不断处理事件流。这两个进程都有启动和停止方法。他们通过事件队列相互交谈。
起初我想创建一个带有启动和停止方法的接口,因为这样我就可以注入一个 IEnumerable 并循环通过它来启动和停止。但后来我看到 IHostedService 与 StartAsync 和 StopAsync 有一个非常相似的接口。
将它们保持原样的利弊是什么,即一个 IHostedService 实现,它控制两个进程以及将我的进程转换为 IHostService 并注册两者的利弊
c# - 稍后在执行中更改服务实现(在 Microsoft.Extensions.DependencyInjection 中)
我有一个用例(带有登录的应用程序,然后是具有不同功能的各种页面进行导航),我在ConfigureServices
方法中注册了我的大部分服务(就像通常那样),因此在我的实际(UI)执行之前程序。
然而,我有一些服务,我只注册为假人(甚至根本不注册),因为这些服务应该在我登录到 Web 服务后才设置。在这个登录过程中,不仅检查用户是否有效,而且在用户验证后得到各种配置数据。其中一些数据本身需要(例如用户货币),但其他数据用于确定应该使用哪个服务实现。甚至其他数据也被用作实现本身;意味着我通过 HTTP GET 获得一个对象的实例(实现特定的接口IMyInterface
),并希望将此实例注册为IMyInterface
.
然后应该将此配置数据(或相应的服务)添加回我的IServiceProvider
,以便可以将它们注入到稍后将显示的页面中。这就是我的问题所在:
IServiceProvider
在已经构建之后,有没有办法在运行时稍后添加服务实现?请记住,如果可能的话,我只想使用来自Microsoft.Extensions.DependencyInjection
( IServiceCollection
,IServiceProvider
等) 的东西,而不是第三方容器(我知道这适用于例如 DryIoC)。如果我能够添加IOptions
到IServiceProvider
稍后的执行中,部分帮助是有帮助的,但我更有可能需要添加服务实现。
c# - System.Exception:找不到方法:'ILoggerFactory.AddConsole(Microsoft.Extensions.Logging.ILoggerFactory,Microsoft.Extensions.Logging.LogLevel)'
我正在尝试将 .netcore 框架从 2.2 升级到 3.1 。但我也想在 3.1 中使用 IHostingEnvironment、IWebHostBuilder 和 AddNewtonsoftJson。(我知道它们应该被替换,但如果我这样做,将需要代码重构,我现在不需要)。
当我使用 swagger 执行 api 时,收到 500 错误消息:
无法解析 JSON。原始结果:System.Exception:找不到方法:'Microsoft.Extensions.Logging.ILoggerFactory Microsoft.Extensions.Logging.ConsoleLoggerExtensions.AddConsole(Microsoft.Extensions.Logging.ILoggerFactory, Microsoft.Extensions.Logging.LogLevel)'。
这是堆栈跟踪的开始
失败:Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1] 执行请求时发生未处理的异常。System.MissingMethodException:找不到方法:'Microsoft.Extensions.Logging.ILoggerFactory Microsoft.Extensions.Logging.ConsoleLoggerExtensions.AddConsole(Microsoft.Extensions.Logging.ILoggerFactory,Microsoft.Extensions.Logging.LogLevel)'。
我只在 Program.cs 中配置 Logger。
appsettings.json 中的配置
我不明白为什么它不起作用。
注意:我在这个项目中有 6 个 API,其中 1 个成功完成上述更改,5 个失败并出现上述错误。