我是SignalR的新手Chathub。我发现的所有示例似乎已经过时或与ASP.NET核心无关。
有人知道如何正确执行此操作吗?
编辑:要澄清,我知道如何做di en asp.net核心,问题是我不知道如何在SignalR Hub中进行操作。
signalr,有一个SignalRAppBuilderExtensions
类,可以为您提供UseSignalR
方法。
在Startup.cs
中:
using Microsoft.AspNetCore.Builder;
public void Configure(IApplicationBuilder app)
{
app.UseSignalR(routes =>
{
routes.MapHub<YourHub>("/yourhub");
}
}
然后像往常一样做生意
public class YourHub: Hub
{
public YourHub(Stuff stuff)
{
}
}
版本:microsoft.aspnetcore.signalr 1.0.0-preview1-final
在.NET核心2(依赖项注入(中作为功能出现 - 您无需添加诸如Unity等软件包等。这是官方文档。
基本上,在具有.NET核心应用程序时,您的入口点Program.cs
和Startup.cs
文件将在应用程序的初始启动下执行。
带有依赖注入的"魔术"发生在Startup.cs
中。在那里(默认情况下(您有
public void ConfigureServices(IServiceCollection services)
{
/// code
}
要添加注入,您需要执行以下操作:
services.AddTransient<IMyInterface, MyClassImplementingMyInterface>();
除了AddTransient
,还有另外2种可能性,可以定义您服务的寿命。它们是:AddSingleton
和AddScoped
。我上面提到的这个答案以及文档很好地解释了所有这些的含义,但用几句话进行了说明:
取决于我们如何配置此服务的寿命 容器将提供相同或不同的实例 为请求类服务。
-
AddTransient
-对象总是不同的;一个新实例是提供给每个控制器和每个服务。 -
AddScoped
-对象在请求中是相同的,但是在不同的请求中有所不同 -
AddSingleton
-每个对象的对象相同和每个请求(无论是否提供实例配置(