2010-08-20 49 views
1

當我有這個代碼點點:進入內部ActionFilter編譯異常訪問請求對象

using System; 
using System.Web.Mvc; 

public class SecureFilter : RequireHttpsAttribute 
{ 
    public override void OnAuthorization(AuthorizationContext filterContext) 
    { 
     if (null == filterContext) 
     { 
      throw new ArgumentNullException("filterContext"); 
     } 

     if (null != filterContext.HttpContext && filterContext.HttpContext.Request.IsLocal) 
     { 
      return; 
     } 

     base.OnAuthorization(filterContext); 
    } 
} 

當我試圖確定請求是本地的還是不就是我得到的編譯時異常。它給我這個錯誤:

'System.Web.HttpContextBase' does not contain a definition for 'Request' and no extension method 'Request' accepting a first argument of type 'System.Web.HttpContextBase' could be found (are you missing a using directive or an assembly reference?)

從我的理解Request對象實際上所屬的控制器,但我不太清楚如何,我應該創建這個動作過濾器,如果我不能獲得訪問物體。

任何指導在這裏將不勝感激!

+1

喬希,這一定是一個配置問題 - 你的代碼片段對我來說工作正常。如果你開始一個全新的MVC項目,你是否也遇到了同樣的問題? – 2010-08-20 14:02:29

+0

@尼克裏格斯,好吧很奇怪。將操作篩選器添加到主項目工作中。創建了一個新的mvc解決方案,並將過濾器添加到不同的項目,並且它也可以工作。所以,我的項目有些東西是棘手的,但我不知道是什麼。 – joshlrogers 2010-08-20 14:11:48

+0

只是一個想法,它可能是一些擴展方法,需要一個使用語句,你可能已經刪除? – 2011-06-11 06:51:53

回答

0

這看起來與這個項目有點古怪。我遵循Nick Riggs的建議並嘗試了一個測試解決方案,它工作得很好。所以我從當前的解決方案中刪除了該項目並創建了一個新項目,並將這些文件複製到其中。這讓它工作。

1

@Josh,我想說這只是因爲System.Web.Abstractions程序集引用。可能是你無意中刪除了參考。

+0

+1爲我工作,謝謝! – LamonteCristo 2012-07-18 01:49:36