.net core MVC采用的是依赖注入模式,服务都注册在StartUp类的ConfigureServices方法中

 public void ConfigureServices(IServiceCollection services){  services.AddIdentity<ApplicationUser, IdentityRole>().AddEntityFrameworkStores<AppDBContext>().AddDefaultTokenProviders();services.Configure<CookiePolicyOptions>(options =>{                options.MinimumSameSitePolicy = SameSiteMode.None;});services.AddDbContext<AppDBContext>(options =>options.UseMySql(Configuration.GetConnectionString("CardContext"), b => b.MigrationsAssembly("Vcyber.CardCenter.Web")));services.AddScoped(typeof(IRepository<>), typeof(EfRepository<>));services.AddScoped(typeof(IAsyncRepository<>), typeof(EfRepository<>));services.AddScoped<IUserService, UserService>();services.AddScoped<IUserRepository, UserRepository>();services.AddScoped<ICardTypeRepository, CardTypeRepository>();services.AddScoped<IProjectRepository, ProjectRepository>();services.AddScoped<ICardInfoRepository, CardInfoRepository>();services.AddScoped<ISysOperationRecordService, SysOperationRecordService>();services.AddDistributedMemoryCache();services.AddSession();services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);services.AddOptions();services.Configure<InterFaceConfig>(Configuration.GetSection("InterFaceConfig"));}

thrift服务端的方法不能写在Controller里面,又要在项目启动的时候自动启动,怎么办呢,只能写在Configure方法中来调用了。

 public void Configure(IApplicationBuilder app, IHostingEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}else{app.UseExceptionHandler("/Home/Error");app.UseHsts();}app.UseHttpsRedirection();app.UseStaticFiles();app.UseCookiePolicy();app.UseSession();app.UseMvc(routes =>{routes.MapRoute(name: "default",template: "{controller=Home}/{action=index}/{id?}");});//启动Thrift服务app.UseThriftServer();          }

UseThriftServer为扩展方法,开启服务需要传入数据库的实例才能去做数据库的操作,如何在扩展方法中获取实例传给服务端这是关键

public static class ApplicationExtenssion{public static IApplicationBuilder UseThriftServer(this IApplicationBuilder appBuilder){var services = appBuilder.ApplicationServices.CreateScope().ServiceProvider;var context = services.GetService<AppDBContext>();//获取数据库连接实例var config = services.GetService<IOptions<InterFaceConfig>>();//获取配置文件var port =Convert.ToInt32(config.Value.Port);//端口号var service = new Server(context);           Processor processor = new Processor(service);TServerTransport transport = new TServerSocket(port);TServer server = new TThreadPoolServer(processor, transport);var lifeTime = services.GetService<IApplicationLifetime>();lifeTime.ApplicationStarted.Register(() =>{server.Serve();});lifeTime.ApplicationStopped.Register(() =>{server.Stop();transport.Close();});return appBuilder;}}

这样thrift服务端就可以正常操作数据库了,服务端代码如下:

 public class Server : Iface{private AppDBContext _dbContext;public Server(AppDBContext context){_dbContext = context;}#region 卡券列表/// <summary>/// 卡券基础信息列表/// </summary>/// <param name="projectNo">项目编号</param>/// <param name="cardTypeNo">类型编号</param>/// <returns></returns>public CardInfoListResult GetCardInfoList(string projectNo, string cardTypeNo){var proj = _dbContext.Projects.Where(p => p.No == projectNo).FirstOrDefault();if (proj == null){model.IsSuccess = false;model.Message = "项目编号不存在";}else{model.IsSuccess = true;model.Message = "查询成功";model.Data = proj ;}}}

.Net Core Mvc 2.1如何调用thrift相关推荐

  1. 关于MVC与三层架构、个人总结网上杂七杂八得出的最终成果、asp.net (core) MVC、JavaWeb的MVC

    阅读本文必须明白的事情 首先需要明白的是不同语言实现的MVC与三层架构对应的层是不一样的!!! 拿.net来说,.net实现MVC与其他语言的MVC具体实现是不同的,asp.net MVC与 MVC ...

  2. 007.Adding a view to an ASP.NET Core MVC app -- 【在asp.net core mvc中添加视图】

    索引: 目录索引 Adding a view to an ASP.NET Core MVC app 在asp.net core mvc中添加视图 2017-3-4 7 分钟阅读时长 本文内容 1.Ch ...

  3. ASP.NET Core MVC 源码学习:详解 Action 的匹配

    前言 在 上一篇 文章中,我们已经学习了 ASP.NET Core MVC 的启动流程,那么 MVC 在启动了之后,当请求到达过来的时候,它是怎么样处理的呢? 又是怎么样把我们的请求准确的传达到我们的 ...

  4. asp.net core mvc权限控制:分配权限

    1,分配权限到角色:Microsoft.AspNetCore.Identity.EntityFrameworkCore中提供了RoleManager类,类中提供了把权限分配到角色的方法: Task&l ...

  5. 你所不知道的ASP.NET Core MVC/WebApi基础系列(二)

    前言 好久没冒泡了,算起来估计有快半年没更新博客了,估计是我第一次停更如此之久,人总有懒惰的时候,时间越长越懒惰,但是呢,不学又不行,持续的惰性是不行dei,要不然会被时光所抛弃,技术所淘汰,好吧,进 ...

  6. 从零开始实现ASP.NET Core MVC的插件式开发(五) - 插件的删除和升级

    标题:从零开始实现ASP.NET Core MVC的插件式开发(五) - 使用AssemblyLoadContext实现插件的升级和删除 作者:Lamond Lu 地址:https://www.cnb ...

  7. 用ASP.NET Core MVC 和 EF Core 构建Web应用 (一)

    系统必备 .NET Core 2.0.0 SDK 或更高版本. 已安装 ASP.NET 和 Web 开发工作负载的 Visual Studio 2017 15.3 版或更高版本. 创建Web应用程序 ...

  8. ASP.net Core MVC项目给js文件添加版本号

    需求:使用ASP.net Core Mvc开发公司内部web系统,给视图中js(css,image也可以)文件添加版本号避免缓存问题. 解决方法:利用Taghelper提供的标签(asp-append ...

  9. [ASP.NET Core MVC] 如何实现运行时动态定义Controller类型?

    昨天有个朋友在微信上问我一个问题:他希望通过动态脚本的形式实现对ASP.NET Core MVC应用的扩展,比如在程序运行过程中上传一段C#脚本将其中定义的Controller类型注册到应用中,问我是 ...

  10. ASP.NET MVC升级到ASP.NET Core MVC踩坑小结

    写在前面 ASP.NET Core是微软新推出的支持跨平台.高性能.开源的开发框架,它的优势不必多说,因为已经说得太多了.当然,现在依然有着数量庞大的系统运行于.NET Framework上,由于有大 ...

最新文章

  1. Linux 多线程应用中编写安全的信号处理函数
  2. AIX的异步IO设置
  3. 4G EPS 中的 User Plane
  4. SDL2源码分析6:拷贝到渲染器(SDL_RenderCopy())
  5. Java的标签--弱化的goto
  6. 解决popup不随着window一起移动的问题
  7. C++ 11 深度学习(二) 命名空间简介、基本输入输出精解
  8. (Python的)__ name__中包含什么?
  9. python 单例模式 redis_python 单例模式实现多线程共享连接池
  10. hdu1284经典钱币兑换问题
  11. 华为的接班人要具备哪些能力?任正非这样说...
  12. Java基础学习总结(124)——Java9逆天的十大新特性
  13. python标准化_数据标准化与Python实现
  14. 波士顿动力新机器人登场!
  15. 【图像去噪】基于matlab全变分算法图像去噪【含Matlab源码 1324期】
  16. 易筋SpringBoot 2.1 | 第廿一篇:SpringBoot的Mybatis生成工具Generator
  17. 把live2D模型放上网页
  18. 圣思园经典Java培训教学
  19. 在python中的占位符中、请你选出不属于占位符的选项_2020年超星尔雅微表情识别·读脸读心 作业答案...
  20. python分苹果问题_给大家分享一个「Python算法题」分苹果

热门文章

  1. 隐私泄露距离你我有多远?APP扩大个人隐私收集,增大隐私保护难度
  2. 左神算法基础class6—题目1图的存储与表达
  3. 手机拍的视频后期怎么处理?视频大神的后期技巧,Vlog大片也能做
  4. 温州话的歌曲也很好听
  5. sd卡数据恢复源码android,SD卡受损数据恢复图文详解
  6. JSAAS的Activiti会签开发扩展处理
  7. 城市社会经济专项规划之生态人居规划
  8. PDF技术(一)-Java实现Office系列文件转PDF文件
  9. MVC中局部视图的使用
  10. 动态优化模型/ 变分法:泛函、极值、变分