Веб-сокет недоступен в ядре signalr?

#c# #asp.net-core #asp.net-core-signalr

#c# #asp.net-core #asp.net-core-signalr

Вопрос:

Я работаю над ядром signalr в asp.net ядро 2.2. У меня есть как мобильные, так и веб-клиенты signalr core, я поддерживаю междоменное соединение.Мой веб-клиент успешно подключен к ядру signalr, но мой клиент Android выдает исключение ниже: «Веб-сокеты недоступны на вашем сервере», следовательно, веб-клиент также использует транспортный уровень веб-сокетов, и он находится в состоянии подключения.

мой серверный код находится в классе запуска

 // This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
    services.Configure<CookiePolicyOptions>(options =>
    {
        // This lambda determines whether user consent for non-essential cookies is needed for a given request.
        options.CheckConsentNeeded = context => true;
        options.MinimumSameSitePolicy = SameSiteMode.None;
    });
    services.AddCors(options =>
    {
        options.AddPolicy("CorsPolicy",
            builder => builder.SetIsOriginAllowed((host) => true)/*WithOrigins("https://localhost:44381")*/
            .AllowAnyMethod()
            .AllowAnyHeader()
            .AllowCredentials());
    });
    services.AddSignalR();
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Error");
        // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseCors("CorsPolicy");
    app.UseSignalR(routes =>
    {
        routes.MapHub<ChatHub>("/chatHub");
    });
    app.UseMvc();
}
  

Пожалуйста, ответьте мне, как я подключаю клиент Android signalr к серверу signalr core?

Комментарии:

1. @O.Jones какое отношение к этому имеет частота секундомера?

2. @kkarakk упс. работаю над чем-то другим во время ответа. неправильная ссылка. facepalm.

3. Вы смотрели на это? learn.microsoft.com/en-us/aspnet/core/fundamentals / … (правильная ссылка)

Ответ №1:

Вам необходимо включить WebSockets поддержку на вашем сервере.

Чтобы включить веб-сокеты в Windows Server 2012 или более поздней версии :

  • Воспользуйтесь мастером добавления ролей и компонентов из меню «Управление» или ссылкой в диспетчере сервера.

  • Выберите установку на основе ролей или функций. Выберите Далее.

  • Выберите соответствующий сервер (по умолчанию выбран локальный сервер). Выберите Далее.

  • Разверните веб-сервер (IIS) в дереве ролей, разверните Веб-сервер, а затем разверните Разработка приложений.

  • Выберите протокол WebSocket. Выберите Далее.

  • Если дополнительные функции не нужны, выберите Далее.

  • Выберите Установить.

  • Когда установка завершится, выберите Закрыть, чтобы выйти из мастера.