首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是WebActivator在ASP.NET 5中的类似物

什么是WebActivator在ASP.NET 5中的类似物
EN

Stack Overflow用户
提问于 2015-04-13 13:42:42
回答 1查看 1.8K关注 0票数 2

以前(在asp.net 4.x中),使用WebActivator类进行寄存器引导逻辑是常见的做法。

我知道现在我们有了Startup类,可以配置所有的东西。但是有了WebActivator,我有了更多的选择--这是可能的--将一个程序集放入一个应用程序中(添加一个nuget),程序集自己注册了它所需要的一切。为此,汇编具有程序集级别属性,其类型应被称为:

代码语言:javascript
复制
[assembly: WebActivator.PreApplicationStartMethod(typeof (ModuleBootstrapper), "Start")]

对于新的光荣asp.net 5中的这些事情(“库初始化”),现在推荐的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-18 11:19:59

您可以在WebActivator 5下获得的功能在ASP.NET 5下是不可能的,我坚信这是不可能的,因为ASP.NET 5管道的一个伟大之处在于,您负责构建请求管道。所以,这个决定应该是故意的。例如:

我有一个中间件:

代码语言:javascript
复制
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提要。消费者需要将其放入管道并将其添加到管道内的适当位置:

代码语言:javascript
复制
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的情况下,您需要查看其他几个地方来确定管道,最重要的是,您将不会做出它所在位置的决定。

所以,摆脱它并不是件坏事。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29606849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档