以前(在asp.net 4.x中),使用WebActivator类进行寄存器引导逻辑是常见的做法。
我知道现在我们有了Startup类,可以配置所有的东西。但是有了WebActivator,我有了更多的选择--这是可能的--将一个程序集放入一个应用程序中(添加一个nuget),程序集自己注册了它所需要的一切。为此,汇编具有程序集级别属性,其类型应被称为:
[assembly: WebActivator.PreApplicationStartMethod(typeof (ModuleBootstrapper), "Start")]对于新的光荣asp.net 5中的这些事情(“库初始化”),现在推荐的方法是什么?
发布于 2015-04-18 11:19:59
您可以在WebActivator 5下获得的功能在ASP.NET 5下是不可能的,我坚信这是不可能的,因为ASP.NET 5管道的一个伟大之处在于,您负责构建请求管道。所以,这个决定应该是故意的。例如:
我有一个中间件:
public class MonitoringMiddlware
{
private RequestDelegate _next;
public MonitoringMiddlware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext httpContext)
{
// do some stuff on the way in
await _next(httpContext);
// do some stuff on the way out
}
}我可以打包并发布到NuGet提要。消费者需要将其放入管道并将其添加到管道内的适当位置:
public class Startup
{
public IServiceProvider ConfigureServices(IServiceCollection services)
{
// configure services here
}
public void Configure(IApplicationBuilder app)
{
app.UseStatusCodePages();
app.UseFileServer();
// I want middleware to sit here inside the pipeline.
app.UseMiddleware<MonitoringMiddlware>();
app.UseMvc(routes =>
{
routes.MapRoute("areaRoute", "{area:exists}/{controller}/{action}");
routes.MapRoute(
"controllerRoute",
"{controller}",
new { controller = "Home" });
});
}
}因此,每当我进入这段代码时,我就可以看到管道是如何在没有任何魔法的情况下构建的。在WebActivator的情况下,您需要查看其他几个地方来确定管道,最重要的是,您将不会做出它所在位置的决定。
所以,摆脱它并不是件坏事。
https://stackoverflow.com/questions/29606849
复制相似问题