2011-07-04 102 views
5

我網站上的一些頁面需要使用SSL,因此我已將[RequireHttps]添加到相關控制器。不過,我仍然希望我的大部分網頁始終使用非SSL,因此我成功使用code I found on SO來創建自定義的[DoNotUseHttps]過濾器。覆蓋全局動作過濾器

爲了方便起見,我想默認包含這個非SSL過濾器,所以我將它添加到Global.asax文件中設置的全局過濾器中。不過,我似乎已經創建了一個無限循環,每個過濾器都重定向到另一個過濾器。

這導致我的問題...有什麼我可以添加到我的全局過濾器來檢測[RequireHttps]已被應用到控制器?

回答

5

當然,你可以詢問任何你喜歡的動作和控制器。檢查RequireHttpsAttribute

public override void OnActionExecuted(ActionExecutedContext filterContext) 
{ 
    base.OnActionExecuted(filterContext); 

    bool requireHttps = filterContext.ActionDescriptor.ControllerDescriptor 
     .GetCustomAttributes(typeof(RequireHttpsAttribute), true).Length > 0 
}