[英]IOptions not working with TinyIOC/NancyFX
我試圖執行選項模式(推薦在這里 )與項目NancyFX
/ TinyIOC
,但它不工作。
我在Startup.cs.ConfigureServices
方法上注冊了選項,但是當我嘗試在我的類上注入設置時, TinyIoc
拋出:
Nancy.TinyIoc.TinyIoCResolutionException:無法解析類型:AppSettings。
我認為這是因為選項模式使用Microsoft.Extensions.DependencyInjection
但Nancy
使用TinyIoc
作為默認值,因此TinyIoc
嘗試解析IOptions<AppSettings>
並失敗。
有沒有辦法使用的方式IOptions<>
與TinyIoc
?
這是我的代碼:
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));
}
public SearchService(IOptions<AppSettings> config)
{
}
錯誤:
應用程序啟動異常:System.Reflection.TargetInvocationException:調用目標已拋出異常。
System.InvalidOperationException:嘗試在組合期間滿足其中一個依賴項時出錯,請確保已在容器中注冊所有新依賴項並檢查innerexception以獲取更多詳細信息。
Nancy.TinyIoc.TinyIoCResolutionException:無法解析類型:Nancy.NancyEngine
Nancy.TinyIoc.TinyIoCResolutionException:無法解析類型:Nancy.Routing.DefaultRequestDispatcher
Nancy.TinyIoc.TinyIoCResolutionException:無法解析類型:Nancy.Routing.DefaultRouteResolver
Nancy.TinyIoc.TinyIoCResolutionException:無法解析類型:Nancy.Routing.RouteCache
Nancy.TinyIoc.TinyIoCResolutionException:無法解析類型:MyProject.MyService
Nancy.TinyIoc.TinyIoCResolutionException:無法解析類型:Microsoft.Extensions.OptionsModel.IOptions`1 [[MyProject.AppSettings,MyProject,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]
一些額外的信息:
"dependencies": {
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.Owin": "1.0.0-rc1-final",
"Nancy": "1.4.3",
"Microsoft.Framework.ConfigurationModel": "1.0.0-beta4",
"Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta4",
"Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final"
},
DNX運行時版本:
1.0.0-rc1-update1 mono
非常感謝你。
其實我找到了答案。 我必須創建一個自定義引導程序並在TinyIoc上注冊已解析的依賴項:
Startup.cs:
public void Configure(IApplicationBuilder app)
{
app.UseOwin(x => x.UseNancy(new NancyOptions
{
Bootstrapper = new CustomBootstrapper(app)
}));
}
CustomBootstrapper.cs:
protected override void ConfigureApplicationContainer(TinyIoCContainer container)
{
base.ConfigureApplicationContainer(container);
container.Register<IOptions<AppSettings>>(_app.ApplicationServices.GetService<IOptions<AppSettings>>());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.