How to use IAppBuilder-based Owin Middleware in ASP.NET 5

后端 未结 2 380
鱼传尺愫
鱼传尺愫 2021-02-05 07:31

ASP.NET 5 (aspnet vnext) is OWIN based like Katana was, but has different abstractions. Notably IAppBuilder has been replaced by IApplicationBuilder.

2条回答
  •  野性不改
    2021-02-05 07:55

    Edit: you can now use the AspNet.Hosting.Katana.Extensions package for that.


    Here's a slightly different version, that uses AppBuilder.DefaultApp:

    public static IApplicationBuilder UseOwinAppBuilder(this IApplicationBuilder app, Action configuration)
    {
        if (app == null)
        {
            throw new ArgumentNullException(nameof(app));
        }
    
        if (configuration == null)
        {
            throw new ArgumentNullException(nameof(configuration));
        }
    
        return app.UseOwin(setup => setup(next =>
        {
            var builder = new AppBuilder();
            var lifetime = (IApplicationLifetime) app.ApplicationServices.GetService(typeof(IApplicationLifetime));
    
            var properties = new AppProperties(builder.Properties);
            properties.AppName = app.ApplicationServices.GetApplicationUniqueIdentifier();
            properties.OnAppDisposing = lifetime.ApplicationStopping;
            properties.DefaultApp = next;
    
            configuration(builder);
    
            return builder.Build, Task>>();
        }));
    }
    

    Note that referencing Microsoft.Owin makes your app incompatible with dnxcore50 (Core CLR).

提交回复
热议问题