1
为了简便起见,我减少了我的代码,并使其简单。
代码/设置:
我有一个类:
class MyService
{
public Guid InstanceID = Guid.NewGuid;
我在服务中添加MyService
为作用域:
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<MyService, MyService>();
然后在我看来,我注入服务:
@inject MyService _myService
@_myService.InstanceID //display
上面的代码显示每个请求的不同结果,正如预期的范围服务一样。
但是,在SignalR Hub中注入服务时,我总是得到相同的输出。
MyHub(MyService myService)
{
_myService = myService;
}
public void Test()
{
Clients.Caller.Log(_myService.InstanceID); //Log is a custom function in JS
虽然集线器本身被实例每次调用Test()
,被注入的MyService
实例它始终是相同的。
我的要求:
我想要的MyService
一个新的实例在中心被注入控制器/查看每个请求的方式相同。
问:
这是SignalR的默认行为?或者我做错了什么?
使用的包:
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.WebSockets" Version="0.2.0-*" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.Server" Version="0.2.0-rtm-22752" />
Microsoft.AspNetCore.SignalR.Server已弃用,因此不会出厂。 – Pawel