Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Após executar a aplicação e clicar em qualquer link do menu aparece um erro

Erro de Servidor no Aplicativo '/'. Error activating ProdutosController using implicit self-binding of ProdutosController No constructor was available to create an instance of the implementation type.

Activation path: 1) Request for ProdutosController

Suggestions: 1) Ensure that the implementation type has a public constructor. 2) If you have implemented the Singleton pattern, use a binding with InSingletonScope() instead. Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código.

Detalhes da Exceção: Ninject.ActivationException: Error activating ProdutosController using implicit self-binding of ProdutosController No constructor was available to create an instance of the implementation type.

Activation path: 1) Request for ProdutosController

Suggestions: 1) Ensure that the implementation type has a public constructor. 2) If you have implemented the Singleton pattern, use a binding with InSingletonScope() instead.

Erro de Origem:

Exceção sem tratamento foi gerada durante a execução da atual solicitação da Web. As informações relacionadas à origem e ao local da exceção podem ser identificadas usando-se o rastreamento de pilha de exceção abaixo.

Rastreamento de Pilha:

[ActivationException: Error activating ProdutosController using implicit self-binding of ProdutosController No constructor was available to create an instance of the implementation type.

4 respostas

Oi Bruna,

Em que exercício você teve essa dificuldade? Como está o código da sua classe ProdutosController?

Persistência de dados com NHibernate 3. Relacionamento entre Entidades

using log4net; using LojaWeb.Entidades; using LojaWeb.Infra; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using NHibernate; using LojaWeb.DAO;

namespace LojaWeb.Controllers { public class ProdutosController : Controller { // // GET: /Produtos/ private ProdutosDAO dao;

private ProdutosController(ProdutosDAO produtosDAO) { this.dao = produtosDAO; }

public ActionResult Index() {

IList produtos = new List(); return View(produtos); }

public ActionResult Form() { return View(); }

public ActionResult Adiciona(Produto produto) { //ISession session = NHibernateHelper.AbreSession(); //dao.Adiciona(produto); if (produto.Categoria.Id == 0) { produto.Categoria = null; } dao.Adiciona(produto); return RedirectToAction("Visualiza", new { id = produto.Id }); }

public ActionResult Remove(int id) { return RedirectToAction("Index"); }

public ActionResult Visualiza(int id) { ISession session = NHibernateHelper.AbreSession(); ProdutosDAO produtosDAO = new ProdutosDAO(session); Produto p = produtosDAO.BuscaPorId(id); session.Close(); return View(p); }

public ActionResult Atualiza(Produto produto) { //ISession session = NHibernateHelper.AbreSession(); //ProdutosDAO produtosDAO = new ProdutosDAO(session); //produtosDAO.Atualiza(produto); //session.Close(); if (produto.Categoria.Id == 0) { produto.Categoria = null; } dao.Atualiza(produto); return RedirectToAction("Index"); }

public ActionResult ProdutosComPrecoMinimo(double? preco) { ViewBag.Preco = preco; IList produtos = new List(); return View(produtos); }

public ActionResult ProdutosDaCategoria(string nomeCategoria) { ViewBag.NomeCategoria = nomeCategoria; IList produtos = new List(); return View(produtos); }

public ActionResult ProdutosDaCategoriaComPrecoMinimo(double? preco, string nomeCategoria) { ViewBag.Preco = preco; ViewBag.NomeCategoria = nomeCategoria; IList produtos = new List(); return View(produtos); }

public ActionResult BuscaDinamica(double? preco, string nome, string nomeCategoria) { ViewBag.Preco = preco; ViewBag.Nome = nome; ViewBag.NomeCategoria = nomeCategoria;

IList produtos = new List(); return View(produtos); } public ActionResult ListaPaginada(int? pagina) { int paginaAtual = pagina.GetValueOrDefault(1); ViewBag.Pagina = paginaAtual; IList produtos = new List(); return View(produtos); } } }

solução!

Esse erro provavelmente está acontecendo porque o construtor da sua classe ProdutosController está "private" ao invés de "public":

private ProdutosController(ProdutosDAO produtosDAO) { this.dao = produtosDAO; }

Troque o private por public e veja se resolve.

Obrigada, funcionou!