代码之家  ›  专栏  ›  技术社区  ›  sashang

如何在ASP.NET的configureServices函数中获取连接字符串

  •  4
  • sashang  · 技术社区  · 7 年前

    let configureServices (services : IServiceCollection) =
        // Configure InMemory Db for sample application        
        services.AddDbContext<IdentityDbContext<IdentityUser>>(
            fun options ->        
                options.UseInMemoryDatabase("NameOfDatabase") |> ignore
            ) |> ignore
    

    但是它使用内存中的数据库。我想持久化一个用户注册信息,我有postgresql设置,并希望使用该数据库来持久化信息。我有连接字符串信息设置.json文件。我想把上面的函数改为:

    let configureServices (services : IServiceCollection) =
        // Configure InMemory Db for sample application        
        services.AddDbContext<IdentityDbContext<IdentityUser>>(
            fun options ->        
                let config = ctx.GetService<IConfiguration>()
                let connString = config.Item("connectionString")
                options.UseNpgsql(connString) |> ignore
            ) |> ignore
    

    但问题是,在configureServices函数中,我无法访问处理应用程序配置的Httpcontext(由上面的ctx表示)。我该怎么做?基本上我想从设置.json配置服务函数中的文件。

    2 回复  |  直到 7 年前
        1
  •  3
  •   Pooja Suryawanshi    7 年前

      <connectionStrings>
        <add name="DefaultConnection"
             connectionString="Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" />
      </connectionStrings>
    </configuration>
    

    它存储了数据库连接字符串。 在ConfigureServices()中,您可以访问Configuration对象,该对象允许您从应用程序配置文件。

    public void ConfigureServices(IServiceCollection services)
    {
        // Add framework services.
        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
    }
    

    Click Here

        2
  •  3
  •   Charles Mager    7 年前

    我假设您使用的函数与下面的类似:

    WebHost
        .CreateDefaultBuilder(args)
        .ConfigureServices(Action<_> configureServices)
        .Configure(Action<_> configureApp)
    

    你会发现这东西太多了 ConfigureServices 方法需要 Action<WebHostBuilderContext, IServiceCollection> . 因此,您可以将函数更改为:

    let configureServices (context:WebHostBuilderContext) (services:IServiceCollection) =
        let config = context.Configuration
        let connString = config.GetConnectionString "DefaultConnection"
    
        services.AddDbContext<IdentityDbContext<IdentityUser>>(fun opts ->
            opts.UseNpgsql(connString) |> ignore
            ) |> ignore
    

    并将调用代码更改为(注意 Action<_> 变成 Action<_,_> ):

    WebHost
        .CreateDefaultBuilder(args)
        .ConfigureServices(Action<_,_> configureServices)
        .Configure(Action<_> configureApp)
    
    推荐文章