Расширение AuthorizeAttribute для .net MVC… две проблемы/вопроса

StackOverflow https://stackoverflow.com/questions/2043459

  •  19-09-2019
  •  | 
  •  

Вопрос

Мой первый вопрос: куда мне поместить это специальное расширение, чтобы его можно было вызывать вместо атрибута AuthorizeAttribute по умолчанию?

В настоящее время я создал новый проект, который содержит всю мою бизнес-логику в моем решении MVC.В моем проекте логики есть файл .cs, содержащий все мои классы безопасности.Я попытался добавить класс расширения в этот файл, и на моем контроллере он прекрасно видит класс, и Intellisense не лает на меня, когда я добавляю атрибут, но когда я пытаюсь скомпилировать, я получаю сообщение об ошибке, связанное с типом или пространством имен. невозможно найти.Нужно ли размещать пользовательский атрибут в каком-то специальном месте для компиляции?

Второй вопрос... может быть связан с первым:Когда я пытаюсь переопределить метод AuthorizeCore из AuthorizeAttribute, я передаю System.Web.HttpContextBase как httpcontext.По какой-то причине визуальная студия не может разрешить System.Web.HttpContextBase.Опять же, это может быть связано с тем, где в моем решении сохранен этот класс.Или, возможно, мне нужно куда-то импортировать dll, чтобы расширить это?

Пожалуйста, порекомендуйте.

Это было полезно?

Решение

Насколько мне известно, класс может находиться в любом проекте библиотеки классов, если вы правильно ссылаетесь на проект на своем веб-сайте.Возможно, вы захотите попробовать перекомпилировать проект — похоже, что он может найти исходные файлы, но кода нет в DLL.

Вероятно, вам потребуется добавить ссылку на System.Web.Abstractions в свой проект.Хотя «базовые» классы находятся в пространстве имен System.Web, они находятся в другой DLL.

Другие советы

У меня это работает, надеюсь, это поможет вам.

using System.Web.Mvc;

public class CustomAuthorize : AuthorizeAttribute
{

}

In controller

 [CustomAuthorize]
public class OrderController : Controller
{

}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top