2017-04-25 17 views
1

カスタム認証属性がasp.netクラスで呼び出されないため、何が欠けているのかわかりません。カスタムASP.NET属性が呼び出されない

私の属性は次のようになります。

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] 
public class MyAuthorize : System.Web.Http.AuthorizeAttribute 
{ 
    public override void OnAuthorization(HttpActionContext actionContext) 
    { 
     // ... 
    } 

    protected bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     // Logic here. 
     return false; 
    } 
} 

そして、私はそうのようなWebサービスの内部からそれを呼んでいる:

[WebService(Namespace = "http://something/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
public class AccessPoint : System.Web.Services.WebService 
{ 
    [WebMethod] 
    [MyAuthorize] 
    public bool SomeWebMethod(int a) 
    { 
     //Do stuff 
     return false; 
    } 
} 

私はそれを実行するたび、それは右を通じて、決して落ちます属性をトリガーします。 FYI; System.Web.Mvc.AuthorizeAttributeはAuthorizeAttributeが存在しないと私に伝えていたので、System.Web.Http.AuthorizeAttributeを使用しました。

+3

System.Web.Http.AuthorizeAttributeは、WebApiコントローラでのみ使用されます。 MVCやその他のサービスでは無視されます。ここには、MVCでもWebApiでもないXML Webサービスがあります。レガシーWebサービスのセキュリティについては、http://stackoverflow.com/a/36214224/61164を参照してください。 –

+0

すごく、それは私が知る必要があった、私をまっすぐに設定してくれてありがとう。 – punkysmurf

答えて

3

ここでは、ASP.NET Web APIと従来の古典的なASMX Webサービスの間にひどい混乱を招いているようです。 ASP.NET Web API承認属性(ASP.NET API RESTサービスで使用するように設計されている)を作成し、それを従来のASMX WebServiceに適用しました。これら2つの技術は完全に異なり、混在させるべきではありません。

これは、ランボルギーニエンジンを馬車のカートに乗せるようなものです。

+2

*ランボルギーニのエンジンを馬車のカートに乗せるのと同じです。*良い類推:D – CodeNotFound

+2

@ loneshark99 - 私は誰も誰も楽しんでいるとは思っていません。 。 –

関連する問題