설정 클래스에 대한 종속성 주입을 해결할 수 없습니다.

조나단 우드

좋아, 나는 분명히 여기서 어리석은 일을하고 있지만 그것을 찾을 수없는 것 같습니다.

나는 처음 면도기 페이지 응용 프로그램을 작성하고 만든거야 EmailSender하는 구현 클래스를 IEmailSender. 또한 EmailSender생성자는 EmailSettings매개 변수를 받습니다 . EmailSettings다음과 같이 구현됩니다.

appsettings.json

"EmailSettings": {
  "Host": "****.*****.com",
  "Port": "587",
  "UserName": "****@**********.com",
  "Password": "***********",
  "FromAddress": "****@**********.com",
  "EnableSsl": "true"
},

EmailSettings.cs

public class EmailSettings
{
    public string Host { get; set; }
    public int Port { get; set; }
    public string UserName { get; set; }
    public string Password { get; set; }
    public string FromAddress { get; set; }
    public bool EnableSsl { get; set; }
}

Startup.cs

public void ConfigureServices(IServiceCollection services)
{

    // ...

    services.Configure<EmailSettings>(Configuration.GetSection("EmailSettings"));
    services.AddSingleton<IEmailSender, EmailSender>();
}

이것은 내가 읽은 기사 에서 취한 기본적인 접근 방식을 따른다 . 하지만 앱을 실행하면 즉시 예외가 발생합니다.

System.AggregateException : '일부 서비스를 생성 할 수 없습니다 (서비스 설명자'ServiceType : Microsoft.AspNetCore.Identity.UI.Services.IEmailSender 수명 : 일시적인 구현 유형 : Bamtok.Services.EmailSender '를 확인하는 동안 오류가 발생했습니다.': 서비스를 확인할 수 없습니다. 'Bamtok.Services.EmailSender'활성화를 시도하는 동안 'Bamtok.Services.EmailSettings'유형에 대해) '

어떻게 든 생성자 EmailSettings에게 전달할 인스턴스를 인스턴스화 할 수 없습니다 EmailSender.

내가 놓친 것을 누구든지 볼 수 있습니까?

Nkosi

Configure<T>레지스터 IOptions<EmailSettings>및 언급했듯이 EmailSettings종속 클래스에 주입 했습니다.

클래스를 그대로두고 리팩터링 할 수 있습니다. Startup

public void ConfigureServices(IServiceCollection services) {

    // ...

    EmailSettings settings = Configuration.GetSection("EmailSettings").Get<EmailSettings>();
    services.AddSingleton(settings);
    services.AddSingleton<IEmailSender, EmailSender>();
}

또는IOptions<T> 종속성 을 예상하도록 클래스를 업데이트하십시오.

public class EmailSender : IEmailSender {
    private readonly EmailSettings emailSettings;

    public EmailSender(IOptions<EmailSettings> emailSettings) {
        this.emailSettings = emailSettings.Value;
    }

    //...
}

후자의 제안과 전자의 차이점은 구현이 프레임 워크 문제와 결합되지 않는다는 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

종속성 주입을 시도 할 때 사용자 정의 플러그인 블록에 대한 클래스를 찾을 수 없습니다.

분류에서Dev

구성 ': profile'에 대한 모든 종속성을 해결할 수 없습니다.

분류에서Dev

$ this-> something을 클래스 본문에 설정하면 생성자 종속성 주입을 사용할 수 없습니다.

분류에서Dev

URLUtil에 대한 종속성을 해결할 수 없습니다. 요구 사항이 충돌합니다.

분류에서Dev

구성 ': app : _debugApkCopy'에 대한 모든 종속성을 해결할 수 없습니다.

분류에서Dev

Gradle Drools 6.2 구성 ': compile'에 대한 모든 종속성을 해결할 수 없습니다.

분류에서Dev

Gradle 빌드 실패 : ': classpath'구성에 대한 모든 종속성을 해결할 수 없습니다.

분류에서Dev

Tycho는 다른 조각에 대한 조각 종속성을 해결할 수 없습니다.

분류에서Dev

WebApi 2-구조 맵을 사용한 DataProtection.IDataProtector 종속성 주입을 결정할 수 없습니다.

분류에서Dev

자식 클래스에서 부모 속성을 설정할 수 없습니다.

분류에서Dev

해결 방법 gitlab에 대한 종속성을 해결할 수 없음

분류에서Dev

해결 방법 gitlab에 대한 종속성을 해결할 수 없음

분류에서Dev

12.04에서 libpango-1.0-0에 대한 종속성을 해결할 수 없습니다.

분류에서Dev

프로젝트 org.thingsboard : application : jar : 3.3.0-SNAPSHOT에 대한 종속성을 해결할 수 없습니다.

분류에서Dev

jenkins maven이 프로젝트에 대한 종속성을 해결할 수 없습니다.

분류에서Dev

Google 서비스 종속성을 해결할 수 없습니다.

분류에서Dev

Asp.Net WebApi (TFS 클래스)에서 종속성을 해결할 수 없습니다.

분류에서Dev

Azure Functions에서 requirements.txt를 설치할 때 numpy에 대한 종속성을 확인할 수 없습니다.

분류에서Dev

Maven 종속성에서 클래스를 해결할 수 없습니다.

분류에서Dev

오류 : ': app @ debug / compileClasspath'에 대한 종속성을 해결할 수 없음 : okhttp.jar (com.squareup.okhttp3 : okhttp : 4.3.1)을 다운로드 할 수 없습니다.

분류에서Dev

Heroku / Rails : 공급 업체 종속성에 대한 경로를 설정할 수 없습니다.

분류에서Dev

오류 : ': app @ debug / compileClasspath'에 대한 종속성을 해결할 수 없음 : twitter.aar를 다운로드 할 수 없습니다 (com.twitter.sdk.android:twitter:3.1.0)

분류에서Dev

다른 클래스에서 UIButton 대상을 설정할 수 없습니까?

분류에서Dev

기존 프로젝트에 ensime을 설치하면 종속성을 해결할 수 없습니다.

분류에서Dev

동일한 aspect 클래스의 메소드에 대한 조언을 설정할 수 없습니다.

분류에서Dev

randoop에서 클래스 경로에 대한 패키지 이름을 설정할 수 없습니다.

분류에서Dev

Jboss에서 데이터 소스 종속성을 해결할 수 없습니다.

분류에서Dev

Nest는 둘 이상의 데이터베이스 연결이있는 경우 Repository에 대한 종속성을 해결할 수 없습니다.

분류에서Dev

Ubuntu 16.04에 대한 종속성으로 인해 python-dev를 설치할 수 없습니다.

Related 관련 기사

  1. 1

    종속성 주입을 시도 할 때 사용자 정의 플러그인 블록에 대한 클래스를 찾을 수 없습니다.

  2. 2

    구성 ': profile'에 대한 모든 종속성을 해결할 수 없습니다.

  3. 3

    $ this-> something을 클래스 본문에 설정하면 생성자 종속성 주입을 사용할 수 없습니다.

  4. 4

    URLUtil에 대한 종속성을 해결할 수 없습니다. 요구 사항이 충돌합니다.

  5. 5

    구성 ': app : _debugApkCopy'에 대한 모든 종속성을 해결할 수 없습니다.

  6. 6

    Gradle Drools 6.2 구성 ': compile'에 대한 모든 종속성을 해결할 수 없습니다.

  7. 7

    Gradle 빌드 실패 : ': classpath'구성에 대한 모든 종속성을 해결할 수 없습니다.

  8. 8

    Tycho는 다른 조각에 대한 조각 종속성을 해결할 수 없습니다.

  9. 9

    WebApi 2-구조 맵을 사용한 DataProtection.IDataProtector 종속성 주입을 결정할 수 없습니다.

  10. 10

    자식 클래스에서 부모 속성을 설정할 수 없습니다.

  11. 11

    해결 방법 gitlab에 대한 종속성을 해결할 수 없음

  12. 12

    해결 방법 gitlab에 대한 종속성을 해결할 수 없음

  13. 13

    12.04에서 libpango-1.0-0에 대한 종속성을 해결할 수 없습니다.

  14. 14

    프로젝트 org.thingsboard : application : jar : 3.3.0-SNAPSHOT에 대한 종속성을 해결할 수 없습니다.

  15. 15

    jenkins maven이 프로젝트에 대한 종속성을 해결할 수 없습니다.

  16. 16

    Google 서비스 종속성을 해결할 수 없습니다.

  17. 17

    Asp.Net WebApi (TFS 클래스)에서 종속성을 해결할 수 없습니다.

  18. 18

    Azure Functions에서 requirements.txt를 설치할 때 numpy에 대한 종속성을 확인할 수 없습니다.

  19. 19

    Maven 종속성에서 클래스를 해결할 수 없습니다.

  20. 20

    오류 : ': app @ debug / compileClasspath'에 대한 종속성을 해결할 수 없음 : okhttp.jar (com.squareup.okhttp3 : okhttp : 4.3.1)을 다운로드 할 수 없습니다.

  21. 21

    Heroku / Rails : 공급 업체 종속성에 대한 경로를 설정할 수 없습니다.

  22. 22

    오류 : ': app @ debug / compileClasspath'에 대한 종속성을 해결할 수 없음 : twitter.aar를 다운로드 할 수 없습니다 (com.twitter.sdk.android:twitter:3.1.0)

  23. 23

    다른 클래스에서 UIButton 대상을 설정할 수 없습니까?

  24. 24

    기존 프로젝트에 ensime을 설치하면 종속성을 해결할 수 없습니다.

  25. 25

    동일한 aspect 클래스의 메소드에 대한 조언을 설정할 수 없습니다.

  26. 26

    randoop에서 클래스 경로에 대한 패키지 이름을 설정할 수 없습니다.

  27. 27

    Jboss에서 데이터 소스 종속성을 해결할 수 없습니다.

  28. 28

    Nest는 둘 이상의 데이터베이스 연결이있는 경우 Repository에 대한 종속성을 해결할 수 없습니다.

  29. 29

    Ubuntu 16.04에 대한 종속성으로 인해 python-dev를 설치할 수 없습니다.

뜨겁다태그

보관