背景:
netcore项目中有些服务是在通过中间件来通信的,比如orleans组件。它里面服务和客户端会指定网关和端口,我们只需要开放客户端给外界,服务端关闭端口。相当于去掉host,这样省掉了些指定配置连接和端口,用起来非常方便。
干掉host,下面代码:
using Microsoft.AspNetCore.Builder;using Microsoft.AspNetCore.Hosting;using Microsoft.Extensions.DependencyInjection;using Microsoft.Extensions.Hosting;using System;namespace StartupFilterTest{ internal class Program { static void Main(string[] args) { #region Net 5 Host.CreateDefaultBuilder(args) .ConfigureServices((hoyStartupFilter>(); }) //.ConfigureWebHostDefaults(host => //{ // host.UseStartup<Startup>(); //}) .Build().Run(); #endregion #region Net 6 //var builder = WebApplication.CreateBuilder(); //builder.Services.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<IApplic








