我試圖構建自定義AuthorizeAttribute,所以在我的核心項目(類庫),我有這樣的代碼:重寫AuthorizeCore定製授權屬性導致「沒有合適的方法來否定」的錯誤
using System;
using System.Web;
using System.Web.Mvc;
using IVC.Core.Web;
using System.Linq;
namespace IVC.Core.Attributes
{
public class TimeShareAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if(!httpContext.Request.IsAuthenticated)
return false;
var rolesProvider = System.Web.Security.Roles.Providers["TimeShareRoleProvider"];
string[] roles = rolesProvider.GetRolesForUser(httpContext.User.Identity.Name);
if(roles.Contains(Website.Roles.RegisteredClient, StringComparer.OrdinalIgnoreCase))
{
return true;
}
return false;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectResult("/TimeShare/Account/LogOn");
base.HandleUnauthorizedRequest(filterContext);
}
}
}
當我嘗試建立我得到這個錯誤的東西: 錯誤2「IVC.Core.Attributes.TimeShareAuthorizeAttribute.AuthorizeCore(System.Web.HttpContextBase)」:發現覆蓋沒有合適的方法...
我在這裏錯過了什麼嗎?我搜遍了所有的網站,但我能找到的每個網站都告訴我要做的就是我在這裏做的。我使用mvc2 btw。
- 編輯添加:如果我在相同的解決方案中移動類到mvc項目沒有編譯器錯誤。
該方法的簽名和使用看起來幾乎相同的東西,對我來說很好...... – Tahbaza 2010-08-15 17:13:23
你引用了什麼版本的'System.Web.Mvc'程序集? – 2010-08-16 07:31:43
2.0我認爲這是問題,但我檢查和雙重檢查和三重檢查......我結束了離開Web應用程序中的屬性繼續前進,但我很想知道爲什麼它會給出編譯器錯誤,如果我移動它到一個類庫。 – JoseMarmolejos 2010-08-16 12:33:27