2016-07-08 59 views
0

在我的团队中,我们正在将ASP.NET Core RC1 Web应用程序迁移到RTM。有一个自定义中间件在内部创建StaticFileMiddleware的实例。在RC1它曾经是:Asp.Net核心RTM StaticFileMiddleware:如何通过IOptions <StaticFileOptions>?

// ctor signature: 
StaticFileMiddleware(RequestDelegate next, IHostingEnvironment hostingEnv, 
    StaticFileOptions options, // <-- 
    ILoggerFactory loggerFactory); 

,我们可以轻松地创建和传递的StaticFileOptions一个实例。现在,在RTM是:

// ctor signature: 
StaticFileMiddleware(RequestDelegate next, IHostingEnvironment hostingEnv, 
    IOptions<StaticFileOptions> options, // <-- 
    ILoggerFactory loggerFactory); 

,我对如何创建IOptions<StaticFileOptions>不知道。其实我不知道如何创建一个一般IOptions<T>,围绕具有T实例。

Latest reference文档页面,还没有在上面谷歌的结果,不提供任何暗示。 StaticFileMiddleware上的搜索结果一般都很少。

任何人都知道如何进行?实际上,这阻碍了我们向移民迈进。 TA

+0

看看'options pattern' docs https://docs.asp.net/en/latest/fundamentals/configuration.html#using-options-and-configuration-objects –

+0

感谢您的评论。我意识到这一点,我们已经'配置'选项从建立'IConfiguration'设置的部分,然后注入'IOptions '在其他部分。在当前场景中,我们在某个方法内部创建一个'StaticFileOptions',具体取决于运行时的逻辑和值,同样的方法我们需要将其传递给中间件c'tor。那么现在我们应该把它分成两部分,一部分是我们用DI创建和注册选项实例,另一部分是我们注入并使用该实例的部分? – superjos

+2

为什么你不使用这样的东西? 'services.Configure (options => { //您的逻辑 options.DefaultContentType =“”; //设置其他选项 });'对于您的情况不够吗? –

回答

1

它看起来像静态OptionsMicrosoft.Extensions.Options命名空间提供了一个IOptions<TOptions> Create<TOptions>(TOptions options)静态工厂方法。还没有运行,但至少它没有失败的构建。

顺便说一句,在Asp.Net Core Options github issues和PRs上,有关于这种使用模式的讨论大约在2月/ 3月(2016年)左右进行。仅举几例:Is#122PR#757PR#719PR#124Issue #105带领我(希望)正确的方向。