Pergunta

minha primeira pergunta é, onde posso colocar essa extensão personalizada de modo que ele pode ser chamado em vez do padrão AuthorizeAttribute?

Actualmente, eu criei um novo projeto que contém toda a minha lógica de negócios dentro de minha solução MVC. Eu tenho um arquivo .cs dentro do meu projeto de lógica que contém todas as minhas aulas de segurança. Eu tentei adicionar uma classe de extensão para esse arquivo e no meu controlador, que vê a classe muito bem e intellisense não está latindo para mim quando eu adicionar o atributo, mas quando eu tento compilar, eu recebo um erro que o tipo ou namespace Não pode ser achado. Será que a necessidade atributo personalizado para ser alojado em algum lugar especial, a fim de compilação?

Segunda pergunta ... pode estar relacionado com o primeiro: Quando eu estou tentando substituir o método AuthorizeCore de AuthorizeAttribute, eu estou passando em System.Web.HttpContextBase como HttpContext. Por alguma razão visual studio não pode resolver System.Web.HttpContextBase. Novamente, isto pode estar relacionado com onde eu tenho essa classe salvo na minha solução. Ou talvez eu preciso para importar um lugar dll para estender isso?

Por favor, informe.

Foi útil?

Solução

Tanto quanto eu estou ciente da classe pode estar em qualquer projeto de biblioteca de classe, desde que você tenha devidamente referenciados o projeto em seu Web site. Você pode querer tentar recompilar o projeto -. Parece que ele é capaz de encontrar os arquivos de origem, mas o código não está na DLL

Você provavelmente precisa adicionar uma referência para System.Web.Abstractions ao seu projeto. Enquanto as classes "base" estão no namespace System.Web, eles são encontrados em uma DLL diferente.

Outras dicas

Ele funciona para mim, espero que isso irá ajudá-lo.

using System.Web.Mvc;

public class CustomAuthorize : AuthorizeAttribute
{

}

In controller

 [CustomAuthorize]
public class OrderController : Controller
{

}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top