2016-10-04 61 views
0

我一直在用Authorization進行一段時間的操作,發現有幾頁幫助我重寫默認方法。但是,似乎我無法獲得該屬性的工作。我使用Visual Studio 2013調試了我的項目,但它仍然停留在Authorize方法被重定義的斷點處。如果Web服務在將[Authorize]放在類或甚至單個方法之後工作,這不會成爲問題。我已經嘗試過它們,但它似乎返回的所有內容都是401未授權。它甚至不會輸入所需的Web服務。下面是幾樣來解釋我的問題:授權屬性重定義不起作用

[Authorize] 
[RoutePrefix("api/MyWS")] 
public class MyWSController : ApiController 
{ 
    private Test_UnitOfWork unitOfWork = new Test_UnitOfWork(); 

    [Route("Get"), HttpGet] 
    public IEnumerable<MyWS> Get() 
    { 
     return unitOfWork.MyWSRepository.Get().OrderBy(s => s.Name); 
    } 

OnAuthorization方法的重新定義

public class TokenValidationAttribute : System.Web.Http.AuthorizeAttribute 
{ 
    public override void OnAuthorization(HttpActionContext actionContext) 
    { ... 

控制器調用Web服務

MyWSlist = client.GetSync<IList<MyWS>>("MyWS"); 

我想知道我是什麼在這裏做錯了,看到只要我嘗試調試我的項目,我似乎無法輸入重寫代碼,它只是返回未經授權的錯誤。我也試圖重寫其他方法,但沒有骰子。 問候

+0

默認情況下,您不能將一個斷點添加到Authorize屬性,但請參閱[如何覆蓋Authorize屬性,以便可以在其上放置斷點](http://stackoverflow.com/questions/36140015/how -can-i-override-the-authorize-attribute-so-i-can-put-a-breakpoint-on-it) – stuartd

回答

3

調試我的項目與Visual Studio 2013,但它仍然在那裏的授權方法redifined斷點不 停止。

覆蓋AuthorizeAttribute後,你想除非你配置爲全局過濾以適用於控制器或動作

[TokenValidation] 
public class MyWSController : ApiController 
{ 
    ... 
} 

或者,我錯過了你的問題中的東西?

+0

你是絕對正確的,現在我覺得自己是個大笨蛋。感謝您對此表示清楚。 –