ASP.net MVC Core / Signal R Core - сервер вернул ошибку квитирования: во время квитирования соединения произошла непредвиденная ошибка - PullRequest
0 голосов
/ 10 октября 2019

В настоящее время я пытаюсь настроить Signal R Core в существующем приложении asp.net MVC Core. При загрузке страницы в консоли регистрируется следующее сообщение:

Information: WebSocket connected to ws://localhost:53108/Hubs/PaperworkAuditHub?id=njA7swSt57ASK2cTU-hmRQ.

Однако ниже я получаю три следующие ошибки JavaScript:

Uncaught Error: Server returned handshake error: An unexpected error occurred during connection handshake.
at HubConnection.processHandshakeResponse (signalr.js:2406)
at HubConnection.processIncomingData (signalr.js:2350)
at WebSocketTransport.HubConnection.connection.onreceive (signalr.js:1922)
at WebSocket.webSocket.onmessage (signalr.js:4709)

[2019-10-10T14:14:57.431Z] Error: Connection disconnected with error 'Error: Server returned handshake error: An unexpected error occurred during connection handshake.'.

Uncaught (in promise) Error: Server returned handshake error: An unexpected error occurred during connection handshake.
at HubConnection.processHandshakeResponse (signalr.js:2406)
at HubConnection.processIncomingData (signalr.js:2350)
at WebSocketTransport.HubConnection.connection.onreceive (signalr.js:1922)
at WebSocket.webSocket.onmessage (signalr.js:4709)

Проект ориентирован на .NET Core 2.2 и использует последние пакеты Signalr Core из nuget, а также последний файл signalr.js.

Ниже приведены методы ConfigureServices() и Configure() из Startup.cs

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.AddSignalR();
        services.AddMvc().AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
        services.AddMvc().AddJsonOptions(options => options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver()).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

    }

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/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.UseWebSockets();
        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseCookiePolicy();
        app.UseSignalR(routes =>
        {
            routes.MapHub<PaperworkAuditHub>("/Hubs/PaperworkAuditHub");
            routes.MapHub<RouteScheduleHub>("/Hubs/RouteScheduleHub");
            routes.MapHub<EfficiencyZoneHub>("/Hubs/EfficiencyZoneHub");
        });
        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Account}/{action=Login}");
        });
    }

Наконец, вот соответствующий фрагмент кода из представления .cshtml.

var connection = new signalR.HubConnectionBuilder()
    .withUrl("@Url.Content("~/Hubs/PaperworkAuditHub")")
    .build();

Я пробовал несколько решений (перемещение на UseSignalR() выше UseMvc() в Startup.cs,полностью переделывает настройку SignalR), но до сих пор получаю ту же ошибку.

1 Ответ

0 голосов
/ 18 октября 2019

Мы обнаружили, что проблема заключалась в добавлении дополнительных пакетов SignalR. После полного удаления SignalR и повторной установки (убедившись, что были установлены ТОЛЬКО указанные пакеты), все работало правильно.

...