zoukankan      html  css  js  c++  java
  • Startup里面的一些用法

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Builder;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.AspNetCore.Http;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Configuration;
    using FineUICore;
    using Microsoft.Extensions.Logging;
    using Microsoft.AspNetCore.Authentication.Cookies;
    using System.Text.Encodings.Web;
    using System.Text.Unicode;
    using Microsoft.Extensions.FileProviders;
    using System.IO;
    using Model;
    
    namespace Som
    {
        public class Startup
        {
            public IConfiguration Configuration { get; }
            public Startup(IConfiguration configuration)
            {
                Configuration = configuration;
            }
    
            // This method gets called by the runtime. Use this method to add services to the container.
            // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
            public void ConfigureServices(IServiceCollection services)
            {
                services.AddSignalR();
                services.AddDistributedMemoryCache();
                services.AddSession();
    
                // FineUI 和 MVC 服务
                services.AddFineUI(Configuration);
                services.AddMvc(options =>
                {
                    // 自定义模型绑定(Newtonsoft.Json)
                    options.ModelBinderProviders.Insert(0, new JsonModelBinderProvider());
                });
                services.AddMvc().AddJsonOptions(options =>
                {
                    options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";//将日期格式序列化
                });
    			
    			//添加dbcontext服务,可以实现依赖注入
    			services.AddDbContext<SomDbContext>(options =>
                {
    				/*
    						[
    							  "SomConfig":{
    								"DataBase": "部署库",
    								"Port": "8090"
    							  },
    							  "ConnectionStrings":{
    								"DefaultConnection":"Data Source=(localdb)MSSQLLocalDB;Initial Catalog=master;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False"
    							  }
    						]
    				*/
    				var connStr=Configuration["ConnectionStrings:DefaultConnection"];//是写在Config.json文件里的 : 冒号表示 获取到第二层
    				var  connstr2=Configuration.GetConnectionString("DefaultConnection");//另一种获取方法 自动去Config.json文件里找ConnectionStrings属性
                    optionsBuilder.UseSqlServer(connstr2);
                });
    
                //添加认证Cookie信息
                services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
                    .AddCookie(options =>
                    {
                        options.LoginPath = new PathString("/login");
                        options.Cookie.HttpOnly = true;
                    });
    
                services.AddAntiforgery(options =>
                {
                    options.SuppressXFrameOptionsHeader = true;
                });
    
    			services.AddSingleton<IWelcomeService,WelcomService>();//自定义的接口 和 实现该接口的类 Singleton单列 只生成一个
    			services.AddScoped<IEFManagerService<Student>,EFStrudentService>();//自定义的接口 和 实现该接口的类 Scoped 每个http请求生成一个实例
    
            }
    
            // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
            public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
            {
                //跨域支持
                app.UseCors(builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader().AllowCredentials());
                app.UseSignalR(u => u.MapHub<Chat>("/chathub"));
                // 静态资源中间件
                app.UseStaticFiles(new StaticFileOptions
                {                //设置不限制content-type
                    ServeUnknownFileTypes = true
                });
                app.UseSession();
                //验证中间件
                app.UseAuthentication();
    
                // FineUI 和 MVC 中间件(确保 UseFineUI 位于 UseMvc 的前面)
                app.UseFineUI();
    
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
                else
                {
                    app.UseExceptionHandler("/Login/Error");
                }
                app.UseMvc(routes =>
                {
                    routes.MapRoute(
                        name: "area",
                        template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
                    routes.MapRoute(
                        name: "default",
                        template: "{controller=Home}/{action=Index}/{id?}");
                });
            }
        }
    }
    

      

    下面是利用依赖注入 在构造函数里直接得到类的实例或实现了接口的实例

    public class EFStrudentService
    {
    private readonly SomDbContext _efDbContext;
    public EFManageStrudent(SomDbContext context)
    {
    //这里实现了依赖注入
    this._efDbContext = context;
    }
    public void AddStudent(Student s)
    {
    _efDbContext.Add(s);
    _efDbContext.save();
    }
    }

  • 相关阅读:
    Solon 开发进阶,二、体外扩展机制
    Solon Web 开发,二、开发知识准备
    Solon Web 开发,四、请求上下文
    CODING 项目协同 2.0 —— 让协作有条不紊
    (三)React组件的三大特性 State
    (四)React组件的三大特性 Props
    (五)React的三大特性 refs
    (二)React的组件的创建 ,js类的基础复习
    (一)React系列文章:虚拟DOM的创建与解释,注意的相关规则
    [源码解析] PyTorch 分布式(16) 使用异步执行实现批处理 RPC
  • 原文地址:https://www.cnblogs.com/jiangyunfeng/p/11747559.html
Copyright © 2011-2022 走看看