docker - Docker 容器上的 Blazor

标签 docker .net-core blazor

有人设法在 Docker 容器上运行服务器端托管的 Blazor 应用程序吗?

运行时出现以下异常:

warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
      No XML encryptor configured. Key {c1fe0008-8b2b-46a3-9f80-233ae59e5d17} may be persisted to storage in unencrypted form.
crit: Microsoft.AspNetCore.Hosting.Internal.GenericWebHostService[6]
      Application startup exception
System.InvalidOperationException: Could not load the embedded file manifest 'Microsoft.Extensions.FileProviders.Embedded.Manifest.xml' for assembly 'Microsoft.AspNetCore.Components.Server'.
   at Microsoft.Extensions.FileProviders.Embedded.Manifest.ManifestParser.Parse(Assembly assembly, String name)
   at Microsoft.Extensions.FileProviders.ManifestEmbeddedFileProvider..ctor(Assembly assembly)
   at Microsoft.AspNetCore.Components.Server.ConfigureStaticFilesOptions.PostConfigure(String name, StaticFileOptions options)
   at Microsoft.Extensions.Options.OptionsFactory`1.Create(String name)
   at Microsoft.Extensions.Options.OptionsManager`1.<>c__DisplayClass5_0.<Get>b__0()
   at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
   at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.get_Value()
   at Microsoft.Extensions.Options.OptionsCache`1.GetOrAdd(String name, Func`1 createOptions)
   at Microsoft.Extensions.Options.OptionsManager`1.Get(String name)
   at Microsoft.Extensions.Options.OptionsManager`1.get_Value()
   at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware..ctor(RequestDelegate next, IWebHostEnvironment hostingEnv, IOptions`1 options, ILoggerFactory loggerFactory)
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.Extensions.Internal.ActivatorUtilities.ConstructorMatcher.CreateInstance(IServiceProvider provider)
   at Microsoft.Extensions.Internal.ActivatorUtilities.CreateInstance(IServiceProvider provider, Type instanceType, Object[] parameters)
   at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass4_0.<UseMiddleware>b__0(RequestDelegate next)
   at Microsoft.AspNetCore.Builder.Internal.ApplicationBuilder.Build()
   at Microsoft.AspNetCore.Hosting.Internal.GenericWebHostService.StartAsync(CancellationToken cancellationToken)

Unhandled Exception: System.InvalidOperationException: Could not load the embedded file manifest 'Microsoft.Extensions.FileProviders.Embedded.Manifest.xml' for assembly 'Microsoft.AspNetCore.Components.Server'.
   at Microsoft.Extensions.FileProviders.Embedded.Manifest.ManifestParser.Parse(Assembly assembly, String name)
   at Microsoft.Extensions.FileProviders.ManifestEmbeddedFileProvider..ctor(Assembly assembly)
   at Microsoft.AspNetCore.Components.Server.ConfigureStaticFilesOptions.PostConfigure(String name, StaticFileOptions options)
   at Microsoft.Extensions.Options.OptionsFactory`1.Create(String name)
   at Microsoft.Extensions.Options.OptionsManager`1.<>c__DisplayClass5_0.<Get>b__0()
   at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
   at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.get_Value()
   at Microsoft.Extensions.Options.OptionsCache`1.GetOrAdd(String name, Func`1 createOptions)
   at Microsoft.Extensions.Options.OptionsManager`1.Get(String name)
   at Microsoft.Extensions.Options.OptionsManager`1.get_Value()
   at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware..ctor(RequestDelegate next, IWebHostEnvironment hostingEnv, IOptions`1 options, ILoggerFactory loggerFactory)
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.Extensions.Internal.ActivatorUtilities.ConstructorMatcher.CreateInstance(IServiceProvider provider)
   at Microsoft.Extensions.Internal.ActivatorUtilities.CreateInstance(IServiceProvider provider, Type instanceType, Object[] parameters)
   at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass4_0.<UseMiddleware>b__0(RequestDelegate next)
   at Microsoft.AspNetCore.Builder.Internal.ApplicationBuilder.Build()
   at Microsoft.AspNetCore.Hosting.Internal.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)
   at BlazorUI.ServerSided.Program.Main(String[] args) in /src/BlazorUI.ServerSided/Program.cs:line 19

编辑:这是一个干净的项目,由 Visual Studio 在创建新的 ASP.Net Core Web 应用程序 > Blazor(服务器端)时添加。该项目没有进行其他更改。

通过选择项目(右键单击)>添加> docker支持来创建Dockerfile:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-stretch-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.0-stretch AS build
WORKDIR /src
COPY ["BlazorUI.ServerSided/BlazorUI.ServerSided.csproj", "BlazorUI.ServerSided/"]
RUN dotnet restore "BlazorUI.ServerSided/BlazorUI.ServerSided.csproj"
COPY . .
WORKDIR "/src/BlazorUI.ServerSided"
RUN dotnet build "BlazorUI.ServerSided.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "BlazorUI.ServerSided.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "BlazorUI.ServerSided.dll"]

我正在使用 .net-core 3-preview4-011223 和 Linux 容器。

图像已发布 here .

最佳答案

您在预览版 4 版本中遇到了影响 Linux 构建的众所周知的问题 请参阅https://github.com/aspnet/AspNetCore/issues/9402 Asp.NET 团队声称在预览版 5 中修复了该问题

要解决您的问题,您应该使用自 2019 年 5 月 5 日起每日构建的预览版 5。

您可以从 https://github.com/aspnet/AspNetCore/blob/master/docs/DailyBuilds.md 获取 Preview5 的版本

关于docker - Docker 容器上的 Blazor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55916918/

相关文章:

docker - AWS EC2 上的 Docker 持久存储解决方案

c# - .Net 核心应用程序无法在 Linux 上运行?

blazor - MudBlazor 中的 MudChip 双向绑定(bind)?

linux - Kubernetes 在容器中隐式使用 Nvidia 文件

docker - Dockerfile错误:standard_init_linux.go:207:exec用户进程引起“没有这样的文件或目录

c# - 使用C#/.Net Core签署Powershell脚本

c# - 如何在 .net core/Linux 中实现 Diffie Hellman

asp.net-core - 如何在 Blazor 服务器应用程序中使用信号器从 http 客户端获取 token ?

visual-studio-2019 - 如何在 VS2019 中启用 .NET Core 3 预览版 SDK?

docker - 在 kubernetes helm 如何用新的配置值替换 pod