Staram się budować niestandardowe AuthorizeAttribute, więc w moim projekcie rdzenia (biblioteka klas) Mam ten kod:Zastępowanie AuthorizeCore w niestandardowym Autoryzacja atrybutów wyniki w „nie nadaje się metoda okaże się zastąpić” Błąd
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);
}
}
}
Kiedy próbuję zbudować coś mi ten błąd: Error 2 'IVC.Core.Attributes.TimeShareAuthorizeAttribute.AuthorizeCore (System.Web.HttpContextBase)': nie nadaje się metoda okaże się zastąpić ...
Czy coś mi umyka? Przeszukałem wszystkie strony, ale każda strona, którą mogę znaleźć, po prostu mówi mi, żeby zrobić dokładnie to, co tu zrobiłem. Używam mvc2 btw.
- Edytowane w celu dodania: jeśli przeniesię klasę do projektu mvc w tym samym rozwiązaniu, nie wystąpi błąd kompilatora.
Sygnatury metod i zastosowania wyglądają niemal identycznie jak coś, co działa dobrze dla mnie ... – Tahbaza
Którą wersję zestawu 'System.Web.Mvc' opisałeś? –
2.0 Myślałem, że to problem, ale sprawdziłem i dwukrotnie sprawdziłem i potrójnie sprawdziłem ... W końcu zostawiłem atrybut w aplikacji internetowej, ale chciałbym wiedzieć, dlaczego powoduje to błąd kompilacji, jeśli go przeniesię do biblioteki klas. – JoseMarmolejos