【发布时间】:2020-06-10 00:04:22
【问题描述】:
我创建了默认的 blazor 服务器端应用程序。然后添加Microsoft.AspNetCore.SignalR.Client 和ChatHub 类。然后编辑startup.cs文件(添加services.AddSignalR()和endpoints.MapHub<ChatHub>("/chatHub"))和index.razor页面。然后由 IIS express 运行。没关系。
然后添加 docker 支持并运行 Docker 主机。它不工作。因为只有集线器连接的 StartAsync 方法不起作用。如何运行它?帮我? 非常感谢你们。
错误是:
处理请求时发生未处理的异常。 SocketException:无法分配请求的地址 System.Net.Http.ConnectHelper.ConnectAsync(string host, int port, CancellationToken cancelToken)
HttpRequestException:无法分配请求的地址 System.Net.Http.ConnectHelper.ConnectAsync(string host, int port, CancellationToken cancelToken)
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"]
【问题讨论】:
标签: docker asp.net-core signalr blazor