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 StartupIConfiguration 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 ConfigureServicesIServiceCollection services)
        {
            services.AddSignalR);
            services.AddDistributedMemoryCache);
            services.AddSession);

            // FineUI 和 MVC 服务
            services.AddFineUIConfiguration);
            services.AddMvcoptions =>
            {
                // 自定义模型绑定(Newtonsoft.Json)
                options.ModelBinderProviders.Insert0, new JsonModelBinderProvider));
            });
            services.AddMvc).AddJsonOptionsoptions =>
            {
                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.UseSqlServerconnstr2);
            });

            //添加认证Cookie信息
            services.AddAuthenticationCookieAuthenticationDefaults.AuthenticationScheme)
                .AddCookieoptions =>
                {
                    options.LoginPath = new PathString"/login");
                    options.Cookie.HttpOnly = true;
                });

            services.AddAntiforgeryoptions =>
            {
                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 ConfigureIApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            //跨域支持
            app.UseCorsbuilder => builder.AllowAnyOrigin).AllowAnyMethod).AllowAnyHeader).AllowCredentials));
            app.UseSignalRu => u.MapHub<Chat>"/chathub"));
            // 静态资源中间件
            app.UseStaticFilesnew 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.UseMvcroutes =>
            {
                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 EFManageStrudentSomDbContext context)
{
//这里实现了依赖注入
this._efDbContext = context;
}
public void AddStudentStudent s)
{
_efDbContext.Adds);
_efDbContext.save);
}
}

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注