【问题标题】:How can I get the connection string from configuration in the InjectsAuthElements methods in Startup.cs如何从 Startup.cs 的 InjectsAuthElements 方法中的配置中获取连接字符串
【发布时间】:2021-09-19 17:59:26
【问题描述】:

我正在尝试使用 sql server 配置 elmah。 我看到的配置就是这种形式

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        ...
    }
    private static void InjectsAuthElements(IServiceCollection services)
    {
        ...
        services.AddElmah<SqlErrorLog>(options =>
        {
            options.Path = "ElmahNewNameForSecurity.axd";
            options.OnPermissionCheck = context => context.User.Identity.IsAuthenticated && context.User.IsInRole("Admin");
            options.ConnectionString = "MyConnectionString";
        });
    }
}

我想将 MyConnectionString 替换为 Configuration.GetConnectionString("Default")

【问题讨论】:

  • 您能否添加更多代码来显示InjectsAuthElements 方法的位置?我的意思是,它是在Startup.cs 中还是在不同的文件中?
  • 是的,它在 Startup.cs 中。我编辑了我的问题。
  • 是否可以在方法中添加IConfiguration接口作为第二个参数,并在调用方法时传递Configuration
  • 是的,它确实有效。您能否将您的评论作为答案,以便我可以将问题标记为已解决?

标签: asp.net-core connection-string elmah


【解决方案1】:

只需在方法中添加一个IConfiguration 接口作为第二个参数,并在调用该方法时传递Configuration

private static void InjectsAuthElements(
    IServiceCollection services,
    IConfiguration configuration)
{
    ...
    services.AddElmah<SqlErrorLog>(options =>
    {
        options.Path = "ElmahNewNameForSecurity.axd";
        options.OnPermissionCheck = context => context.User.Identity.IsAuthenticated && context.User.IsInRole("Admin");
        options.ConnectionString = "MyConnectionString";
    });
}

【讨论】:

    【解决方案2】:

    要获取连接字符串,可以使用IConfiguration

    public class Startup
    {
      private readonly IConfiguration _configuration;
      public Startup(IConfiguration configuration)
      {
            _configuration = configuration; 
      }
    
      public void ConfigureServices(IServiceCollection services)
      {
        ...
      }
    
      private static void InjectsAuthElements(IServiceCollection services)
      {
        ...
        services.AddElmah<SqlErrorLog>(options =>
        {
            options.Path = "ElmahNewNameForSecurity.axd";
            options.OnPermissionCheck = context => 
            context.User.Identity.IsAuthenticated && 
            context.User.IsInRole("Admin");
            options.ConnectionString = 
                   _configuration.GetConnectionString("MyConnectionString");
            });
         }
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-01
      • 2016-01-05
      • 1970-01-01
      • 2015-03-02
      • 2021-06-20
      • 2011-03-20
      • 2011-02-06
      • 2012-01-26
      相关资源
      最近更新 更多