Я создал приложение по умолчанию для сервера Blazor. Затем добавлены Microsoft.AspNetCore.SignalR.Client
и ChatHub
класс. Затем отредактировал файл startup.cs (добавьте services.AddSignalR()
и endpoints.MapHub<ChatHub>("/chatHub")
) и страницу index.razor
. Затем запустите IIS express. это хорошо.
Затем добавили поддержку docker и запустили Docker host. это не работает. Потому что не работает только хаб-соединение StartAsyn c методом. Как запустить это? Помоги мне? Большое спасибо, ребята.
Ошибка:
Произошло необработанное исключение при обработке запроса. SocketException: Невозможно назначить запрошенный адрес System. Net .Http.ConnectHelper.ConnectAsyn c (строка host, int port, CancellationToken cancellationToken)
HttpRequestException: Невозможно назначить запрошенный адрес System. Net .Http. ConnectHelper.ConnectAsyn c (строка host, int port, CancellationToken cancellationToken)
код index.razor:
@code {
private HubConnection _hubConnection;
protected override async Task OnInitializedAsync()
{
_hubConnection = new HubConnectionBuilder()
.WithUrl(NavigationManager.ToAbsoluteUri("/chatHub"))
.Build();
_hubConnection.On<string, string>("ReceiveMessage", (user, message) =>
{
var encodedMsg = $"{user}: {message}";
StateHasChanged();
});
await _hubConnection.StartAsync(); // **DON'T WORK IN DOCKER HOST.**
}
}
Docker файл:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["BlazorApp1/BlazorApp1.csproj", "BlazorApp1/"]
RUN dotnet restore "BlazorApp1/BlazorApp1.csproj"
COPY . .
WORKDIR "/src/BlazorApp1"
RUN dotnet build "BlazorApp1.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "BlazorApp1.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "BlazorApp1.dll"]