В настоящее время я пытаюсь настроить 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), но до сих пор получаю ту же ошибку.