owin中间件

复制代码
    public class HelloWorldOptions
    {
        public HelloWorldOptions()
        {
            IncludeTimestamp = true;
            Name = "World";
        }

        public bool IncludeTimestamp { get; set; }
        public string Name { get; set; }
    }

    public class HelloWorldComponent
    {
        readonly Func<IDictionary<string, object>, Task> _next;
        readonly HelloWorldOptions _options;

        public HelloWorldComponent(Func<IDictionary<string, object>, Task> next, HelloWorldOptions options)
        {
            _next = next;
            _options = options;
        }

        public async Task Invoke(IDictionary<string, object> environment)
        {
            var response = environment["owin.ResponseBody"] as Stream;
            using (var writer = new StreamWriter(response))
            {
                if (_options.IncludeTimestamp)
                {
                    await writer.WriteAsync(DateTime.Now.ToLongTimeString());
                }
                await writer.WriteAsync("Hello, " + _options.Name + "!");
            }
        }
    }

    public static class AppBuilderExtensions
    {
        public static void UseHelloWorld(
            this IAppBuilder app, HelloWorldOptions options = null)
        {
            options = options ?? new HelloWorldOptions();
            app.Use<HelloWorldComponent>(options);
        }
    }
复制代码
//app.UseHelloWorld(new HelloWorldOptions
            //{
            //    IncludeTimestamp = true,
            //    Name = "Earth"
            //});

 

posted @   shiningrise  阅读(191)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2014-06-05 zencart资源
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css
点击右上角即可分享
微信分享提示