无法识别Blazor宿主启动程序集



我正在构建一个Blazor应用程序(wasm和server(,它们共享一个API和一组服务。我把这些服务分解成了自己的类库。可能有50个左右的服务,我不想重复服务器和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个服务的服务,我想在我的服务类库中添加一个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,我缺少什么?

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

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

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

我还没有想好如何将其添加到WASM中,还没有

相关内容

最新更新