应用程序可以在调试模式下工作。
在发布模式下,我得到例外
抛出异常:Autofac.dll中的'Autofac.Core.Registration.ComponentNotRegisteredException'
其他信息:请求的服务'Microsoft.Extensions.Options.IOptions`1 [[TIKSN.GroceryChecklist.Models.Configuration.HockeyAppConfiguration,Models,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]'没有注册。要避免此异常,请注册组件以提供服务,使用IsRegistered()检查服务注册,或使用ResolveOptional()方法解析可选依赖项。
这是引发异常的行
var hockeyAppOptions = serviceProvider.GetRequiredService<IOptions<HockeyAppConfiguration>>();
但是此选项已配置并在调试模式下正常工作。
services.Configure<HockeyAppConfiguration>(option =>
{
option.AppID = "my key";
});
我还尝试在 Default.rd.xml 文件中添加类型注册行,但它既不起作用。
<Type Name="Microsoft.Extensions.Options.IOptions{TIKSN.GroceryChecklist.Models.Configuration.HockeyAppConfiguration}" Dynamic="Required Public" />
答案 0 :(得分:1)
我找到了解决方案。我添加了这一行并在调试模式下运行。
Debug.WriteLine($"hockeyAppOptions.Type is {hockeyAppOptions.GetType().FullName}");
输出
hockeyAppOptions.Type is Microsoft.Extensions.Options.OptionsManager`1[[TIKSN.GroceryChecklist.Models.Configuration.HockeyAppConfiguration, Models, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
所以我用
替换了RD.XML中的上一个<Type Name="Microsoft.Extensions.Options.OptionsManager{TIKSN.GroceryChecklist.Models.Configuration.HockeyAppConfiguration}" Dynamic="Required Public" />
它有效。