微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从 Startup.cs 的 InjectsAuthElements 方法中的配置中获取连接字符串

如何解决如何从 Startup.cs 的 InjectsAuthElements 方法中的配置中获取连接字符串

我正在尝试使用 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";
        });
    }
}

我想用 Configuration.GetConnectionString("Default") 之类的东西替换 MyConnectionString

解决方法

只需添加一个 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";
    });
}
,

要获取连接字符串,可以使用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");
        });
     }
   }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。