首页 > 解决方案 > 尝试设置 SignalR 时找不到 UseSignalR 或 UseEndpoints

问题描述

我正在尝试在我的 asp.net core 2.2 解决方案中设置 signalR。

我正在按照指南进行操作,并且已经到了在我的启动文件中的配置函数中添加此配置方法的步骤:

app.UseEndpoints(endpoints =>
{
    endpoints.MapHub<ChatHub>("/chathub");
});

但问题是,我的 app 对象为 no ùseendpints。经过一番搜索,我可以看到曾经使用过的东西UseSignalR被用来代替ùseendpints

app.UseSignalR(routes =>
{
    routes.MapHub<SomeHub>("/path");
});

然而,两者都UseSignalR没有。

我能找到的唯一听起来有用的东西是UseMiddleWare.

然后我尝试复制我应该从文档中采取的步骤:

        app.UseMiddleware(endpoint =>
        {
            endpoint.MapHub
        });

但这根本不起作用。端点没有名为“MapHub”的字段。

我不知道该怎么做,为什么我不能按照文档进行操作?

我的整个启动文件如下所示:

using System.Diagnostics.CodeAnalysis;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Builder;
using Seges.SC.Feature.Personalization.Services;
using Seges.SC.Foundation.ApplicationInitialization.Initialization;

namespace Seges.SC.Feature.Personalization.Initialization
{
    [SuppressMessage(
        "UnusedCode",
        "CA1812:Never instantiated",
        Justification = "Instantiated through reflection/dependency injection")]
    [SuppressMessage(
        "ReSharper",
        "UnusedMember.Global",
        Justification = "Instantiated through reflection/dependency injection")]
    internal class PersonalizationInitializer : BaseApplicationInitializer
    {
        public override string Name => nameof(PersonalizationInitializer);

        public override void RegisterDependencies(IServiceCollection services)
        {
            services.AddTransient<ICurrentUserService, CurrentUserService>();
            services.AddSignalRCore();
        }

        public void Configure(IApplicationBuilder app)
        {

            app.UseMiddleware(endpoint =>
            {
                endpoint.MapHub
            });
        }
    }
}

标签: c#asp.net-coresignalr

解决方案


推荐阅读