- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在全新的 .net core 2 网络应用程序中发生了一件奇怪的事情。这是来自 Visual Studio 内置模板的标准 Web API。 VS 2017,所有的爵士乐。这是整个 startup.cs:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Routing;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using VerySimpleAPI.Helpers;
namespace VerySimpleAPI
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddHostedService<MainLoop>();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvc(routes => {
routes.MapRoute(
name: "Default",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "Home", action = "Index"}
);
});
}
}
}
MainLoop
工具 IHostedService
和 IDisposable
.
services.AddHostedService<MainLoop>();
没有解决,产生错误“‘IServiceCollection’不包含‘AddHostedService’的定义,也没有扩展方法……”所有这些爵士乐。我检查了 Microsoft.Extensions.DependencyInjection
来源,我清楚地看到 public static IServiceCollection AddHostedService<THostedService>(this IServiceCollection services)
的定义
没有托管服务引用,项目编译得很好。有什么我想念的吗?
最佳答案
AddHostedService
是 Microsoft.Extensions.Hosting.Abstractions
的一部分。
虽然它是在 Microsoft.Extensions.DependencyInjection
命名空间中定义的,但它属于 ServiceCollectionHostedServiceExtensions
中的 Microsoft.Extensions.Hosting.Abstractions
类
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Hosting;
namespace Microsoft.Extensions.DependencyInjection
{
public static class ServiceCollectionHostedServiceExtensions
{
/// <summary>
/// Add an <see cref="IHostedService"/> registration for the given type.
/// </summary>
/// <typeparam name="THostedService">An <see cref="IHostedService"/> to register.</typeparam>
/// <param name="services">The <see cref="IServiceCollection"/> to register with.</param>
/// <returns>The original <see cref="IServiceCollection"/>.</returns>
public static IServiceCollection AddHostedService<THostedService>(this IServiceCollection services)
where THostedService : class, IHostedService
{
services.TryAddEnumerable(ServiceDescriptor.Singleton<IHostedService, THostedService>());
return services;
}
}
}
并确保安装和引用了相关包以访问扩展方法
关于c# - IServiceCollection.AddHostedService<>();没有解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51248588/
看完this帖子我可以理解 AddTransient、AddScoped 和 AddSingleton 之间的区别,但是,我看不到它们每个的实际用法。 我的理解是 添加 transient 每次客户端
假设我有某种子应用程序需要在主应用程序中注册一些服务以及它自己的一些特定服务。我想知道是否有更好/自然的方法来执行此操作(也许是某种扩展方法?)。这就是我所做的: public static ISer
我有一个单例服务,我想在启动时运行,而不是等待一些 Controller 通过依赖注入(inject)构建服务。 该服务处理来自服务总线的数据,它似乎并不完全依赖于客户端流量。最干净的初始化方法是什么
我正在创建辅助类以通过库的 IServiceCollection 简化接口(interface)的配置和注入(inject)。 libraries 构造函数包含许多可能早先注入(inject)的依赖项
我有一个接受三个构造函数参数的类。在我的作文根目录中,我只想定义/覆盖 一个 三个构造函数参数中的一个;其他两个依赖项已经映射到我的 DI 容器中,应该从 IServiceProvider 创建。 使
尝试在 Visual Studio 2015 中构建 ReactJS.NET using Microsoft.AspNetCore.Http; using JavaScriptEngineSwitch
我有这个扩展 public static class ServiceCollectionExtensions { public static IServiceCollection MyExte
我在 IServiceCollection 上有一个扩展方法,如下所示: public static IServiceCollection AddMyProjData(this IServiceCol
我在全新的 .net core 2 网络应用程序中发生了一件奇怪的事情。这是来自 Visual Studio 内置模板的标准 Web API。 VS 2017,所有的爵士乐。这是整个 startup.
我正在尝试找出最简单的方法来测试我的框架的服务注册方法。我正在创建动态服务,我的注册看起来像这样: var messageHubConfig = new DynamicHubServiceConfig
我正在尝试在我的 asp core 2.0 项目中使用 Quartz sheduker。我使用 nuget 下载了 Quartz 3.0.4,然后我添加了 services.AddQuartz(new
这个问题在这里已经有了答案: Trying to add AutoMapper to .NetCore1.1 - not recognising services.AddAutoMapper() (1
我有一个 ASP.NET Core 3.0 项目在以下启动时运行良好: public void ConfigureServices(IServiceCollection services) {
我正在尝试添加 Blob 服务客户端以进行依赖项注入(inject)。我正在使用最新版本的 Microsoft.Extensions.Azure,但是我的服务集合不包含 AddAzureClients
我不明白为什么 Startup.cs 会抛出此错误。我尝试了建议的解决方案 here (包括重新启动我的机器并运行 dotnet Restore)但运气不佳。有什么想法吗? CS1061 'IServ
我正在尝试添加 Blob 服务客户端以进行依赖项注入(inject)。我正在使用最新版本的 Microsoft.Extensions.Azure,但是我的服务集合不包含 AddAzureClients
我正在使用 ASP.NET Core 3、.NET Core 3.0.100、Visual Studio 2019 Community。我遵循本指南 https://learn.microsoft.c
考虑以下简单的 appsettings.json: { "maintenanceMode": true } 它加载在我的 Startup.cs/Configure(...) 方法中 public
当我尝试在 visual studio 2015 中构建项目时,我在 ConfigureServices 方法中遇到了问题。 最佳答案 检查您尝试使用的 asp.net-mvc 版本。看起来您正在混合
我将 API 配置分为两个项目(主要项目和次要项目)。在主体 Startup.cs 中,我配置了 Autofac,在辅助中,我使用了主体返回的 IServiceCollection。 要注册一个 Au
我是一名优秀的程序员,十分优秀!