2011-12-08 11 views
0

IoC用のStructureMapを使用していますが、通常のコントローラではうまく動作しますが、領域では機能しません。私は、管理エリアで、次のAccountControllerを持っている:ASP.NET MVC領域でStructureMapを使用

System.InvalidOperationException: An error occurred when trying to create a controller of type 'Foo.Areas.Administration.Controllers.AccountController'. Make sure that the controller has a parameterless public constructor. ---> System.MissingMethodException: No parameterless constructor defined for this object.

任意の助けをいただければ幸いです。

public class AccountController : Controller 
{ 
    private readonly IFormsAuthenticationService formsService; 
    private readonly IMembershipService membershipService; 

    public AccountController(IFormsAuthenticationService formsService, IMembershipService membershipService) 
    { 
     this.formsService = formsService; 
     this.membershipService = membershipService; 
    } 
    ... 
} 

そして、ここではエラーがあります!

EDIT

StructureMapMembershipProviderを解決できませんでした。

For<MembershipProvider>().Use(Membership.Providers["AspNetSqlMembershipProvider"]); 

答えて

0

私は、私は喜んでそれを使用していますので、これは分野での問題であることを疑う:
はここソリューションです。純粋なIOC問題の可能性が高い。このエラーは、注入されたサービスの1つがコンテナで解決できない場合に発生します。その結果、コンテナがコンストラクタのシグネチャと一致できず、存在しない空のコンストラクタにフォールバックしようとします。

私の最初の本能は、2つの注入されたサービスが利用可能であることを確認することです。そのうちの1つが正しく作成されなかった可能性があります。一般的な原因は、メンバーシッププロバイダがデータベースに接続できないことなどです。

診断するには、global.asaxで、コンテナが作成された後、手動でこれらの2つのサービスを解決できるかどうかを確認してください。私はSMは分かりませんが、次のようなものがあります。

var s = container.Resolve<IMembershipService>(); 

これらのサービスを両方解決できることをご自身で確認してください。

関連する問題