【问题标题】:Blazor Hosting Startup Assembly not being recognizedBlazor 托管启动程序集未被识别
【发布时间】:2020-10-23 01:30:38
【问题描述】:

我正在构建一个共享 API 和一组服务的 Blazor 应用程序(wasm 和服务器)。我将服务分解为自己的类库。大概有 50 个左右的服务,我不想在 Server 和 WASM 配置部分重复服务声明。

现状

WASM

public static async Task Main(string[] args)
        {
            var builder = WebAssemblyHostBuilder.CreateDefault(args);
            builder.RootComponents.Add<App>("app");

            var zooAPI = new Uri("http://localhost:51552/api/v1/");

            builder.Services.AddHttpClient<IZooService, ZooService>(client => client.BaseAddress = zooAPI);

        await builder.Build().RunAsync();
    }

服务器

public void ConfigureServices(IServiceCollection services)
        {
            services.AddRazorPages();
            services.AddServerSideBlazor();

            var zooAPI = new Uri("http://localhost:51552/api/v1/");

            services.AddHttpClient<IZooService, ZooService>(client => client.BaseAddress = zooAPI);
        }

由于这两个注册的服务最终将超过 50 个服务 id,因此希望在我的服务类库中添加一个 Startup。

[assembly: HostingStartup(typeof(Zoo.Services.ServicesStartup))]
namespace Zoo.Services
{
    public class ServicesStartup : IHostingStartup
    {
        public void Configure(IWebHostBuilder builder)
        {
            var zooAPI = new Uri("http://localhost:51552/api/v1/");

            builder.ConfigureServices((context, services) =>
            {
                services.AddHttpClient<IZooService, ZooService>(client => client.BaseAddress = zooAPI);
            });
        }

    }
}

我遇到的问题是这个启动没有被识别并且服务没有被注册。异常是“处理请求时发生未处理的异常。InvalidOperationException:无法为属性 'ZooService' 提供值。没有 IZooService 类型的注册服务。

在应用启动时识别并注册此 ServiceStartup 我缺少什么?

【问题讨论】:

    标签: .net-core blazor


    【解决方案1】:

    为了让 Blazor 应用知道有一个 HostingStartup 需要读取,您需要告诉它要查看的程序集。

    对于 Program.cs 中的服务器托管,您可以添加 StartupAssemblies 密钥,也可以将其添加到环境变量 ASPNETCORE_HOSTINGSTARTUPASSEMBLIES

    public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseSetting(WebHostDefaults.HostingStartupAssembliesKey, "Zoo.Services").UseStartup<Startup>();
                    });
    

    我还没有想出如何将它添加到 WASM 中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      • 2020-09-23
      • 2021-03-25
      • 1970-01-01
      • 2021-10-17
      相关资源
      最近更新 更多