Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET中的configureServices函数中获取连接字符串_C#_Asp.net_F#_F# Giraffe - Fatal编程技术网

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

C# 如何在ASP.NET中的configureServices函数中获取连接字符串,c#,asp.net,f#,f#-giraffe,C#,Asp.net,F#,F# Giraffe,我正在尝试使用身份服务来管理我的应用程序的登录。我有以下几点 let configureServices (services : IServiceCollection) = // Configure InMemory Db for sample application services.AddDbContext<IdentityDbContext<IdentityUser>>( fun options ->

我正在尝试使用身份服务来管理我的应用程序的登录。我有以下几点

let configureServices (services : IServiceCollection) =
    // Configure InMemory Db for sample application        
    services.AddDbContext<IdentityDbContext<IdentityUser>>(
        fun options ->        
            options.UseInMemoryDatabase("NameOfDatabase") |> ignore
        ) |> ignore
let configureServices(服务:IServiceCollection)=
//为示例应用程序配置InMemory Db
services.AddDbContext(
趣味选项->
选项。使用内存数据库(“数据库名称”)|>忽略
)|>忽略
但是,它使用内存中的数据库。我想保存一个用户注册信息,我已经安装了postgresql,并想使用该数据库保存信息。我在settings.json文件中有connectionString信息。我想将上述函数更改为:

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
let configureServices(服务:IServiceCollection)=
//为示例应用程序配置InMemory Db
services.AddDbContext(
趣味选项->
让config=ctx.GetService()
让connString=config.Item(“connectionString”)
选项。使用NPGSQL(connString)|>忽略
)|>忽略

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

希望如此,您在ur app.cofig文件中添加了以下代码行



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

WebHost
.CreateDefaultBuilder(args)
.ConfigureServices(操作ConfigureServices)
.Configure(操作配置应用程序)
您会发现,这个
ConfigureServices
方法有一个重载,它执行
操作
。因此,您可以将函数更改为:

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
let configureServices(上下文:WebHostBuilderContext)(服务:IServiceCollection)=
让config=context.Configuration
让connString=config.GetConnectionString“DefaultConnection”
services.AddDbContext(趣味选项->
opts.UseNpgsql(connString)|>忽略
)|>忽略
并将调用代码更改为此(注意
Action
变为
Action
):

WebHost
.CreateDefaultBuilder(args)
.ConfigureServices(操作ConfigureServices)
.Configure(操作配置应用程序)

在发布之前,我按照您建议的解决方案进行了操作。奇怪的是,在F#configureServices中,我没有访问对象配置的权限。也许它的名字不同,但我不知道它是什么。
public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}