2017-04-25 1 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; 
    } 
} 

그리고 내가 좋아하는, 그래서 WebService를 내부에서 호출 해요 :

[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 및 기타 서비스에서 무시됩니다. 여기에 XML 웹 서비스가 있는데, MVC 또는 WebApi가 아닙니다. 레거시 웹 서비스 보안에 대한 자세한 내용은 http://stackoverflow.com/a/36214224/61164를 참조하십시오. –

+0

굉장, 그게 내가 알아야 할 필요가있어, 나를 똑바로 세워 줘서 고마워. – punkysmurf

답변

3

ASP.NET 웹 API와 기존의 고전적인 ASMX WebServices 사이에 끔찍한 혼란을 일으키는 것 같습니다. ASP.NET 웹 API 권한 부여 특성 (ASP.NET API REST 서비스에서 사용하도록 설계됨)을 작성하고이를 레거시 ASMX WebService에 적용했습니다. 이 두 기술은 완전히 다른 기술이므로 서로 섞어서는 안됩니다.

그것은 마차에 람보르기니 엔진을 넣으려고하는 것과 같습니다.

+2

* 람보르기니 엔진을 말 장바구니에 넣으려고하는 것과 같습니다. * 좋은 유추 : D – CodeNotFound

+2

@ loneshark99 - 나는이 기술이 얼마나 다른지에 대한 요점을 밝히려 고 노력하는 사람은 아무도 없다고 생각하지 않습니다. . –

관련 문제