首页 > 作文

解析.netcore项目中IStartupFilter使用教程

更新时间:2023-04-03 22:18:51 阅读: 评论:0

背景:

netcore项目中有些服务是在通过中间件来通信的,比如orleans组件。它里面服务和客户端会指定网关和端口,我们只需要开放客户端给外界,服务端关闭端口。相当于去掉host,这样省掉了些指定配置连接和端口,用起来非常方便。

干掉host,下面代码:

using microsoft.aspnetcore.builder;using microsoft.aspnetcore.hosting;using microsoft.extensions.dependencyinjection;using microsoft.extensions.hosting;using system;namespace startupfiltertest{   怎样开通qq黄钻 internal class program    {        static void main(string[] args)        {            #region net 5            host.createdefaultbuilder(args)               .configurervices((hostcontext, svc) =>               {                   svc.addsingleton<istartupfilter, mystartupfilter>();               })                //.configurewebhostdefaults(host =>                //{                //    host.ustartup<startup>();                //})                .build().run();             #endregion            #region net 6            //var builder = webapplication.createbuilder();            //builder.rvices.addsingleton<istartupfilter,mystartupfilter>();            //var app = builder.build();            //app.run();             //webapplicationbuilder     _bootstraphostbuilder    configurewebhostdefaults            #endregion        }    }}

net5里面注释掉的代码就是我们关掉的服务,跑起来相当于纯控制台了激光打标机改造。

但是startup里面需要写中间件等代码的指定,这样的话想把startup文件干掉又不方便。通过找文档发现istartupfilter可以实现这一块的功能,代替configure代码块。

public void configure(iapplicationbuilder app, iwebhostenvironment env)        {                   }

istartupfilter 大学怎么过接口只有一个方法《action<iapplicationbuilder> configure(action<iapplicationbuilder> next)》只要实现它就行了,再注入到容器里面去。

internal class mystartupfilter : istartupfilter    {        public action<iapplicationbuilder> confi北京有哪些大学gure(action<iapplicationbuilder> next)        {            return app =>            {                app.run(async context => { await context.respon.writeasync("hello world"); });                next(app);   数学日记怎么写         };        }    }
svc.addsingleton<istartupfilter, mystartupfilter>();

但是新的问题又来了, 发现程序跑起来完全不会执行到mystartupfilter里面去,这是为什么呢?喵了下源码发现istartupfilter接口的实现是放到webhost里面

的,所以只能指定host了。而且该方法需要指定startup文件。这样又绕回来了,想精简却被微软的设计绕圈子了。

后面发现net6可以实现不需要startup文件,net6代码上图注释部分。net6的program改动挺大,而且起步是webapplication。通过查看webapplication发现它的builder,webapplicationbuilder里面是通过bootstraphostbuilder指定了configurewebhostdefaults的调用。

net6可以精简掉startup文件,但是它的启动直接绑定了webhost,这里跟net5比较连host都不能省了。

兜兜圈圈还是回到原点,因为没有研究它的源码,所以只能了解到这里了。最后两个问题: 1. net6可否不带host运行,2.istartupfilter和startup可否隔离host相互独立,不要绑一起。

到此这篇关于netcore项目中istartupfilter使用的文章就介绍到这了,更多相关netcore istartupfilter使用内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-03 22:18:50,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/bf684a88b2230b33e2ece1c80d416a18.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:解析.netcore项目中IStartupFilter使用教程.doc

本文 PDF 下载地址:解析.netcore项目中IStartupFilter使用教程.pdf

标签:代码   发现   文件   端口
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图