zoukankan      html  css  js  c++  java
  • ASP.net core 2.0.0 中 asp.net identity 2.0.0 的基本使用(一)—修改数据库连接

    开发环境:vs2017  版本:15.3.5  

    项目环境:.net framework 4.6.1    模板asp.net core 2.0  Web应用程序(模型视图控制器)

     身份验证:个人用户账号  存储应用内的用户帐户

    因为本人并不涉及开发一些中、大规模的应用,所以习惯使用本地数据库,而不是数据库服务,为了方便管理,所以本人的所有项目都是离线数据库文件存储(.mdf)。

    下面开始:

    一、修改数据库连接。引自“张不水”兄的研究成果。

    1、相对路径:

    修改appsettings.json文件中的"ConnectionStrings"(第3行)

    "DefaultConnection": "Data Source=(localdb)\mssqllocaldb;AttachDbFilename=%CONTENTROOTPATH%\App_Data\aspnet123.mdf;Integrated Security=True;Connect Timeout=30;MultipleActiveResultSets=true”

    需注意的是:AttachDbFilename=%CONTENTROOTPATH%\App_Data\aspnet123.mdf;

    使用 ContentRootPath 是将文件放置在项目目录下而不是wwwroot目录下,这样更安全。

    ContentRootPath 用于包含应用程序文件。
    WebRootPath 用于包含Web服务性的内容文件。
    实际使用区别如下:

    ContentRoot: C:MyApp
    WebRoot: C:MyAppwwwroot

    2、修改Startup.cs

    自动生成的原始代码:

    public class Startup
        {
            public Startup(IConfiguration configuration)
            {
                Configuration = configuration;
            }
    
            public IConfiguration Configuration { get; }
    
            // This method gets called by the runtime. Use this method to add services to the container.
            public void ConfigureServices(IServiceCollection services)
            {
                services.AddDbContext<ApplicationDbContext>(options =>
                    options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
    
                services.AddIdentity<ApplicationUser, IdentityRole>()
                    .AddEntityFrameworkStores<ApplicationDbContext>()
                    .AddDefaultTokenProviders();
    
                // Add application services.
                services.AddTransient<IEmailSender, EmailSender>();
    
                services.AddMvc();
            }
    
            // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
            public void Configure(IApplicationBuilder app, IHostingEnvironment env)
            {
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                    app.UseBrowserLink();
                    app.UseDatabaseErrorPage();
                }
                else
                {
                    app.UseExceptionHandler("/Home/Error");
                }
    
                app.UseStaticFiles();
    
                app.UseAuthentication();
    
                app.UseMvc(routes =>
                {
                    routes.MapRoute(
                        name: "default",
                        template: "{controller=Home}/{action=Index}/{id?}");
                });
            }
        }
    View Code

    修改后的代码:

    ①修改Startup方法为如下

    public Startup(IConfiguration configuration,IHostingEnvironment env)
            {
                Configuration = configuration;
    //新添加 _env = env; }

    ②添加public IHostingEnvironment _env { get; }

    ③修改ConfigureServices方法

    注销掉原有的services.AddDbContext

    //添加修改()声明变量conn并做相应处理
    string conn = Configuration.GetConnectionString("DefaultConnection");
    if (conn.Contains("%CONTENTROOTPATH%"))
    {
    conn = conn.Replace("%CONTENTROOTPATH%", _env.ContentRootPath);
    }
    //修改默认的连接服务为conn
    services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlServer(conn));

    修改完成后的代码:

    public class Startup
        {
            public Startup(IConfiguration configuration, IHostingEnvironment env)
            {
                Configuration = configuration;
                //新添加
                _env = env;
            }
    
            public IConfiguration Configuration { get; }
            //新添加
            public IHostingEnvironment _env { get; }
    
            // This method gets called by the runtime. Use this method to add services to the container.
            public void ConfigureServices(IServiceCollection services)
            {
                //services.AddDbContext<ApplicationDbContext>(options =>
                //    options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
    
                //添加修改()声明变量conn并做相应处理
                string conn = Configuration.GetConnectionString("DefaultConnection");
                if (conn.Contains("%CONTENTROOTPATH%"))
                {
                    conn = conn.Replace("%CONTENTROOTPATH%", _env.ContentRootPath);
                }
                //修改默认的连接服务为conn
                services.AddDbContext<ApplicationDbContext>(options =>
                          options.UseSqlServer(conn));
    
    
                services.AddIdentity<ApplicationUser, IdentityRole>()
                    .AddEntityFrameworkStores<ApplicationDbContext>()
                    .AddDefaultTokenProviders();
    
                // Add application services.
                services.AddTransient<IEmailSender, EmailSender>();
    
                services.AddMvc();
            }
    
            // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
            public void Configure(IApplicationBuilder app, IHostingEnvironment env)
            {
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                    app.UseBrowserLink();
                    app.UseDatabaseErrorPage();
                }
                else
                {
                    app.UseExceptionHandler("/Home/Error");
                }
    
                app.UseStaticFiles();
    
                app.UseAuthentication();
    
                app.UseMvc(routes =>
                {
                    routes.MapRoute(
                        name: "default",
                        template: "{controller=Home}/{action=Index}/{id?}");
                });
            }
        }
    View Code

    3、手动在项目中添加“App_data”文件夹,并复制粘贴一个标准的内容为空的.mdf文件。

    为方便大家学习我这里为大家提供了示例数据库

  • 相关阅读:
    查询、行hbase Shell之简单命令说明by小雨
    安全模式、磁盘空间Hadoop 常见问题总结by小雨
    [wc2013]糖果公园(70分)by小雨
    方法、脚本Pig Grunt之简单命令及实例说明by小雨
    数据、进程云计算学习笔记Hadoop简介,hadoop实现原理,NoSQL介绍...与传统关系型数据库对应关系,云计算面临的挑战by小雨
    安装、进程云计算学习笔记hadoop的简介,以及安装,用命令实现对hdfs系统进行文件的上传下载by小雨
    配置文件、虚拟机如何使用vagrant在虚拟机安装hadoop集群by小雨
    请求、信息Cloud Foundry中基于Master/Slave机制的Service Gateway——解决Service Gateway单点故障问题by小雨
    格式化、问题ubuntu 12.10下搭建 hadoop 1.0.4 单机和伪分布模式by小雨
    输出、状态hadoop源码TaskAttemptID TaskTrackerAction JobTracker,FileOutputCommitter相关by小雨
  • 原文地址:https://www.cnblogs.com/chonghanyu/p/7651692.html
Copyright © 2011-2022 走看看