Я использую Asp. Net Core (3) SignalR (последняя версия), как описано в руководстве Microsoft здесь https://docs.microsoft.com/en-us/aspnet/core/signalr/javascript-client?view=aspnetcore-3.1, но с ошибкой при подключении к концентратору.
Установленные на сервере пакеты NuGet:
Microsoft.AspNetCore.SignalR(1.1.0)
Microsoft.AspNetCore.SignalR.Core(1.1.0)
Мой сервер работает на http://localhost: 52852 , а клиент работает на http://localhost: 10843 .
Я добавил URL-адрес клиента в качестве допустимого источника в политике CORS сервера.
Запуск сервера:
// ConfigureServices
services.AddCors(options =>
options.AddPolicy("CorsPolicy",
builder =>
{
builder
.AllowAnyMethod()
.AllowAnyHeader()
.WithOrigins("http://localhost:10843/")
.AllowCredentials();
}));
services.AddSignalR(hubOptions => {
hubOptions.EnableDetailedErrors = true;
});
// App Configure
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapHub<AsteriskHub>("/signalr");
});
// Hub
public class MyHub : Hub
{
// Some Codes ...
}
Клиент Javascript:
const connection = new signalR.HubConnectionBuilder()
.withUrl("http://localhost:52852/signalr")
.configureLogging(signalR.LogLevel.Information)
.withAutomaticReconnect()
.build();
connection.start();
Я прочитал много документов, похожих на мою проблему в Microsoft, и Asp. Net и сообщений Stackoverflow, но запутался, почему у меня возникает эта ошибка :
Доступ к XMLHttpRequest в 'http://localhost: 52852 / signalr /gotiate ?gotiateVersion = 1 ' из источника 'http://localhost: 10843 ' была заблокирована политикой CORS: Ответ на предполётный запрос не проходит проверку контроля доступа: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». * 10 40 *
Спасибо за любую помощь.