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