• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

asp.netcore自定义中间件和service

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

首先新建项目看下main方法:

public static void Main(string[] args)
{
    var host = new WebHostBuilder()
        .UseKestrel()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseIISIntegration()
        .UseStartup<Startup>()
        .Build();

    host.Run();
}
main方法

其中,UseStartup<Startup>()方法使用了Startup类,在Startup类,有ConfigureServices和Configure方法,调用顺序是先ConfigureServices后Configure。

 

下面生成自定义的Service:

public interface IMService
{
    string GetString();
}

public class MService:IMService
{
    public string GetString()
    {
        return "这是我的服务";
    }
}
View Code

可以在ConfigureServices中这样使用:

services.AddSingleton<IMService, MService>();
或者
s
ervices.AddScoped<IMService, MService>();
或者
services.AddTransient<IMService, MService>();
这三个方法的作用都一样,只是生成实例的方式不一样,Singleton是所有的service都用单一的实例,Scoped 是一个请求一个实例,Transient 每次使用都是新实例。
也可以使用依赖注入的方式添加服务
public static class MServiceExtensions
{
    public static void AddMService(
           this IServiceCollection services)
    {
        services.AddScoped<IMService,MService>();
    }
}
View Code

这样就可以在ConfigureServices中这样用:services.AddMService();

 

下面自定义一个middleware

    public class MMiddleware
    {
        private RequestDelegate nextMiddleware;

        public MMiddleware(RequestDelegate next)
        {
            this.nextMiddleware = next;
        }

        public async Task Invoke(HttpContext context)
        {
            context.Items.Add("middlewareID",
                         "ID of your middleware");
            await this.nextMiddleware.Invoke(context);
        }
    }
View Code

同样的,可以在Configure方法中这样使用:app.UseMiddleware<MMiddleware>();

也可以

public static class MyMiddlewareExtensions
{
    public static IApplicationBuilder UseMMiddleware
              (this IApplicationBuilder app)
    {
        return app.UseMiddleware<MMiddleware>();
    }
}
就可以app.UseMMiddleware();


在controller中可以
public IActionResult Index()
{
    ViewBag.str= service.Getstring();
    ViewBag.MiddlewareID = HttpContext.Items["middlewareID"];
    return View();
}





 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Asp.net cs文件无法获取文本框的值发布时间:2022-07-10
下一篇:
ASP.NETMVC5中View显示Html发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap