无法在 Blazor WebAssembly 项目中使用 SignalR / Hub 类

问题描述 投票:0回答:1

我创建了一个新的 Blazor WebAssembly 项目(目标框架:.NET 8.0、安装了 SDK 和托管包),并希望添加 Hub 功能以与其他客户端进行通信,但我很早就陷入困境:扩展方法 AddSignalR() 和类型集线器可用。

using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Spire;
using Spire.Shared;
using Microsoft.AspNetCore.SignalR.Client;
using Microsoft.AspNetCore.SignalR.Protocol;
using Microsoft.AspNetCore.SignalR;

internal class Program
{
    private static async Task Main(string[] args)
    {
        var builder = WebAssemblyHostBuilder.CreateDefault(args);
        builder.RootComponents.Add<App>("#app");
        builder.RootComponents.Add<HeadOutlet>("head::after");
        builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
        builder.Services.AddScoped<ISessionData>(sessiondata => new SessionData());
        builder.Services.AddSingleton<IMainData>(mainData => new MainData());

        builder.Services.AddSignalR(); // <- not working

        WebAssemblyHost app = builder.Build();
        await app.RunAsync();
    }
}

显然,我丢失了一些包,但似乎并不清楚哪个是正确的。我尝试过的这些软件包:

<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
    
        <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Blazor.Extensions.Canvas" Version="1.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="8.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="8.0.0" PrivateAssets="all" />
    <PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="8.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.SignalR.Client.Core" Version="8.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="8.0.0" />  
  </ItemGroup>

</Project>

我错过了什么?

c# blazor signalr blazor-webassembly signalr-hub
1个回答
0
投票

所以,事实证明它与项目的Sdk属性(您在VS中选择的项目类型)有某种关系。

“Microsoft.NET.Sdk.BlazorWebAssembly”(项目类型“Blazor Webassemble Standalone App”)没有介绍我错过的东西,而“Microsoft.NET.Sdk.Web”(项目类型“Blazor Web App”)则介绍了。

© www.soinside.com 2019 - 2024. All rights reserved.