2016-11-20 4 views
2

Autofacを使用して、ロガーを使用するコントローラクラスを取得しようとしています。OWIN統合による自動ファンクションが間違ったコンストラクタを呼び出す

コントローラは2つのコンストラクタ、0パラメータと1

と別のものを持っている私は密接に私ができるようthis exampleを踏襲しているが、何らかの理由で0パラメータのコンストラクタは毎回呼ばれています。

マイコード:

 var config = new HttpConfiguration(); 
     var builder = new ContainerBuilder(); 

     builder.RegisterApiControllers(Assembly.GetExecutingAssembly()); 
     builder.Register(c => new Logger()).As<ILogger>().InstancePerRequest(); 

     var container = builder.Build(); 
     config.DependencyResolver = new AutofacWebApiDependencyResolver(container); 

     app.UseAutofacMiddleware(container); 
     app.UseAutofacWebApi(config); 
     app.UseWebApi(config); 


    this.ConfigureAuth(app); 

コントローラのコンストラクタ:

private readonly ILogger _logger; 

    public MailController() 
    { 

    } 

    public MailController(ILogger logger) 
    { 
     this._logger = logger; 
    } 

私が間違って何をしているのですか?解決

+0

このようなコンストラクタをオーバーロードするのは悪い習慣です。あなたのクラスが依存関係を持つことがあるが他のものは存在しない場合、それは通常あなたのクラスが本当に2つ(またはそれ以上)のクラスである必要があるというサインです。 – axlj

+0

空のコンストラクタはデバッグ用です。私は問題が解決したらそれを削除するつもりです。 言うまでもなく、削除された場合、エラーが発生します(空のコンストラクタが呼び出されているため) –

+0

https://www.asp.net/aspnet/overview/owin-and-katana/owin-startup-classをご覧ください-検出。この場合、テスト環境で作業している場合は、TestLoggerなどを登録することができます。 – axlj

答えて

0

問題は、私のプロジェクトは1ではありませんでしたが、私は、OWINのselfhostのための例に従っていることでした。

VARの設定=新しいHttpConfiguration()。

はライン

VAR設定= GlobalConfiguration.Configurationに置き換えられているはずです。

希望があれば誰か助けてください!

関連する問題