【发布时间】: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 我缺少什么?
【问题讨论】: