.net core 无法识别承载启动程序集的Blazor

.net core 无法识别承载启动程序集的Blazor,.net-core,blazor,.net Core,Blazor,我正在构建一个Blazor应用程序(wasm和服务器),它们都共享一个API和一组服务。我把这些服务分到了它自己的类库中。大概有50个左右的服务,我不想重复服务器和WASM配置部分中的服务声明 现状 瓦斯姆 公共静态异步任务主(字符串[]args) { var builder=WebAssemblyHostBuilder.CreateDefault(args); builder.RootComponents.Add(“应用程序”); var zooAPI=新Uri(“http://localho

我正在构建一个Blazor应用程序(wasm和服务器),它们都共享一个API和一组服务。我把这些服务分到了它自己的类库中。大概有50个左右的服务,我不想重复服务器和WASM配置部分中的服务声明

现状

瓦斯姆

公共静态异步任务主(字符串[]args)
{
var builder=WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add(“应用程序”);
var zooAPI=新Uri(“http://localhost:51552/api/v1/");
builder.Services.AddHttpClient(client=>client.BaseAddress=zooAPI);
等待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);
        }
public void配置服务(IServiceCollection服务)
{
services.AddRazorPages();
AddServerSideBlazor();
var zooAPI=新Uri(“http://localhost:51552/api/v1/");
services.AddHttpClient(client=>client.BaseAddress=zooAPI);
}
由于这两个都注册了最终将超过50个服务的服务,我想在我的服务类库中添加一个启动

[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);
            });
        }

    }
}
[程序集:HostingStartup(typeof(Zoo.Services.ServicesStartup))]
名称空间Zoo.Services
{
公共类服务启动:IHostingStartup
{
公共void配置(IWebHostBuilder)
{
var zooAPI=新Uri(“http://localhost:51552/api/v1/");
builder.ConfigureServices((上下文,服务)=>
{
services.AddHttpClient(client=>client.BaseAddress=zooAPI);
});
}
}
}
我遇到的问题是,此启动未被识别,服务未被注册。异常为“处理请求时发生未处理的异常。InvalidOperationException:无法为属性“ZooService”提供值。没有IZooService类型的注册服务


要在应用程序启动时识别并注册此ServiceStartup,我还缺少什么?

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

对于Program.cs中的服务器托管,您可以添加StartupAssemblys密钥,也可以将其添加到EnvironmentVariables ASPNETCORE_hostingstartupAssemblys中

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseSetting(WebHostDefaults.HostingStartupAssembliesKey, "Zoo.Services").UseStartup<Startup>();
                });
公共静态IHostBuilder CreateHostBuilder(字符串[]args)=>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.UseSetting(WebHostDefaults.HostingStartupAssembliesKey,“Zoo.Services”).UseStartup();
});
我还没有弄明白如何将它添加到WASM中

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