Переопределение AuthorizeCore в пользовательском Авторизовывает результаты атрибута в “никаком подходящем методе, который, как находят, переопределял” ошибку

Я пытаюсь создать пользовательский AuthorizeAttribute, таким образом, в моем Базовом проекте (библиотека классов) у меня есть этот код:

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. Атрибуты. TimeShareAuthorizeAttribute. AuthorizeCore (Система. Сеть. HttpContextBase)': никакой подходящий метод, который, как находят, переопределял...

Я пропускаю что-то здесь? Я искал на всем протяжении, но каждый сайт, который я могу найти просто, говорит мне делать точно, что я сделал здесь. Я использую mvc2 btw.

  • Отредактированный для добавления: если я перемещаю класс в mvc проект в том же решении нет никакой ошибки компилятора.
28
задан JoseMarmolejos 15 August 2010 в 18:07
поделиться

1 ответ

Да, я тоже какое-то время возился с этим и понял это из обозревателя объектов. Это, конечно, НЕ ясно из документов MSDN, если вы не прокрутите полностью до комментариев пользователя в классе HttpContextBase. И, конечно же, множество примеров в сети, но никто никогда не показывает полный файл класса! :)

Попробуйте добавить ссылку на System.Web.Abstractions в свой проект.

ОБНОВЛЕНИЕ: только что заметили из MSDN, что в версии 3.5 он находится в разделе System.Web.Abstractions, а в версии 4 - в разделе System.Web.

30
ответ дан 28 November 2019 в 02:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: