2013-05-12 10 views
5

私はデフォルトASP.NET MVC4のWebアプリケーションテンプレートおよびVisual Studioは、フィルターのディレクトリにInitializeSimpleMembershipAttributeを作成し、このようなアカウントのコントローラーを作成する使用:WebAPIでclass属性が機能しないのはなぜですか?

[Authorize] 
[InitializeSimpleMembership] 
public class AccountController : Controller 
{ 
/* Some Default Actions like Login, LogOff, Register, ...*/ 
} 

と私はAccountController WebAPIのをしようと、私のコードは次のとおりです。

[Authorize] 
[InitializeSimpleMembership] 
public class APIAccountController : ApiController 
{ 
    [System.Web.Http.AcceptVerbs("GET", "POST")] 
    [System.Web.Http.HttpGet] 
    [System.Web.Http.HttpPost] 
    [System.Web.Http.AllowAnonymous] 
    [System.Web.Mvc.ValidateAntiForgeryToken] 
    public string Login(string UserName, string Password, bool RememberMe) 
    { 
     if (WebSecurity.Login(UserName, Password, persistCookie: RememberMe)) 
     { 
      return "OK"; 
     } 

     return "Failed"; 
    } 
} 

、私はこのラインでは、そのブレークAPIを呼び出す:

場合(WebSecurity.Login(ユーザ名、パスワード、あたりsystCookie:RememberMe))

およびsaid:"WebSecurity"クラスの他のメソッドを呼び出す前に、 "WebSecurity.InitializeDatabaseConnection"メソッドを呼び出す必要があります。

私はInitializeSimpleMembershipAttributeでそれを実行し、WEBAPIコントローラは、コントローラと同じです。

属性がWebAPIで実行されないのはなぜですか?

答えて

4

[InitializeSimpleMembership] -attributeは、Web APIのためのSystem.Web.Mvc.ActionFilterAttribute

アクションフィルタから継承フィルタは、実際にWeb APIコントローラ上で実行されるようになっていない、System.Web.Http.Filters.ActionFilterAttributeから継承する必要があります。

あなたがすることができる二つあります:

  • System.Web.Http.Filters.ActionFilterAttribute
  • から継承し、独自のフィルタを実装するのどちらかが、このために、あなたのglobal.asax

    private static SimpleMembershipInitializer _initializer; 
    private static object _initializerLock = new object(); 
    private static bool _isInitialized; 
    
    protected void Application_Start() 
    { 
        // Ensure ASP.NET Simple Membership is initialized only once per app start 
    LazyInitializer.EnsureInitialized(ref _initializer, ref _isInitialized, ref _initializerLock); 
    } 
    

に次のコードを追加します。ロジックをInitializeMembershipから別のクラスに移動してmakeを実行する必要がありますglobal.asaxからアクセスできることを確認してください。

関連する問題