web-dev-qa-db-fra.com

Le contrôleur pour le chemin '/' est introuvable ou n'implémente pas IController dans Sitecore.

J'apprends le rendu de contrôleur dans Sitecore à partir de Ici .

J'ai créé un contrôleur simple (HelloWorld) et la vue associée (Index.schtml). Le mappé (avec Name PageContent) dans la section de rendu de Sitecore Explorer ... et ajouter un élément de rendu dans l'élément d'accueil dans la section de contenu de Sitecore Explorer ..

The controller for path '/' was not found or does not implement IController. 

Tous les articles que j'ai lus sont liés à Asp .Net MVC ..mais j'ai un problème lié à Sitecore MVC

Sample.html (Contenu de la page dans la section de rendu de Sitecore Explorer)

@using Sitecore.Mvc

<html>
<body>
    @Html.Sitecore().Placeholder("content")

    <p>Today's date is @DateTime.Now.ToShortDateString()</p>
</body>

</html>

Seule cette ligne donne problème 

@Html.Sitecore().Placeholder("content")

Si je supprime cette ligne ... Cela fonctionne bien et la page du navigateur affiche la date et l'heure

Index.html

<p>Hello from Controller -todays Date is @DateTime.Now.ToString()</p>

Manette

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MVC.Controllers
{
    public class HelloWorldController : Controller
    {
        //
        // GET: /HellowWorld/

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

    }
}
8
user3767164

Cela peut se produire si vous avez inclus les itinéraires MVC par défaut, car ils remplacent l'implémentation du contrôleur propre à Sitecore.

Assurez-vous d'avoir supprimé les lignes suivantes de RouteConfig.cs/Global.cs (selon la version de MVC).

 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

 routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
 );
9
PizzaTheHut

Veuillez vérifier la version de System.Web.Mvc.dll référencée par votre projet. C’est peut-être plus tard que la même dll dans le dossier Sitecore Website\Bin . Assurez-vous que votre projet référence la même version de System.Web.Mvc.dll que celle du dossier Website\Bin.

FYI. Il existe deux manières de spécifier la fonction de contrôleur dans ControllerRendering:

  • Par juste le nom du contrôleur. (Veuillez omettre le suffixe "Contrôleur" dans Dans ce cas) 
  • Par le nom complet. Par exemple, ". Project.Controllers.HelloWorldController, Project". Dans ce cas, n'omettez pas le suffixe "Controller".
3
Gerzson

Une autre chose que j'aimerais ajouter est la suivante. J'obtenais la même réponse dans Sitecore, puis j'ai remarqué la nécessité du type d'élément suivant.

Mise en page -> Contrôleurs -> [Type de référence d'élément de contrôleur]

J'ai créé chaque élément de contrôleur pour chaque contrôleur et qui semble combler l'écart entre les éléments de rendu du contrôleur dans l'arborescence du contenu sous Rendus et le contrôleur réel dans le code. Le contenu de cet élément de contrôleur fournit l'espace de noms et la dll où le code du contrôleur est stocké et l'action sur laquelle l'action du contrôleur pointe.

J'espère que ça aide. Depuis l'utilisation de ces objets, l'erreur a disparu. J'utilise Sitecore 8.0 en passant dans mon exemple.

1
Carlos Rodriguez

--- Solution de travail ---

Cette erreur survient à cause des différentes versions de votre Sitecore.Web.Mvc.Dll dans le dossier de référence de la solution (Nom du projet-> Références-> Sitecore.Web.Mvc-> clic droit et propriétés de vérification) et de la version de Sitecore.Web. .Mvc.Dll dans Web.Config dans le dossier de vues.

Pour résoudre cette erreur, vous devez vous assurer que la version de Sitecore.Web.Mvc.Dll est la même dans les deux dossiers.

Merci.

0
Akash Mishra

Cela peut être lié au fait que le MVC est installé à différents endroits sur des serveurs différents, mais le fait de changer l'identité du pool d'applications pour l'application dans IIS en "LocalSystem" a résolu le problème pour moi. J'ai recyclé le pool d'applications pour l'application et redémarré le service Web pour l'application après le changement.

0
Steve

En plus de la réponse de Carlos, je devais également ajouter mon modèle dans CMS, sous Modèles:

 enter image description here

0
Igor

Le problème dans mon projet était que j'utilisais asp.net mvc 5.2.4 mais l'installation par défaut de Sitecore utilisait la version 5.2.3 et dans le fichier web.config de mon dossier de vues, la version utilisée était incorrecte et l'erreur ne s'affichait pas. qu'il existe une version manquante! Après avoir rétrogradé ma solution en 5.2.3, cela fonctionnait.

J'ai trouvé ceci sur un autre fil. J'ai installé Sitecore 9.1 en utilisant les scripts et mon composant web.config dans le dossier Views fait effectivement référence à la version 5.2.3. Je me suis donc fatigué de mettre à niveau mon System.Web.Mvc vers la version 5.2.3, ce qui suggère sc910.sc, mais cela n'a pas résolu le problème. Toujours à la recherche d'une solution.

METTRE &AGRAVE; JOUR

J'ai suivi la formation Sitecore 9.1 tout en rencontrant le même problème. Il se trouve que je recevais l'erreur car je n'avais pas (Visual Studio) publié mon tout projet. Après avoir créé un nouveau contrôleur, vous devez reconstruire votre projet, sinon le fichier .dll n'est pas mis à jour et l'erreur se produira. Il est recommandé de créer un profil de publication, puis d'utiliser le bouton publish web pour ce faire.

Une autre chose importante à souligner est, avant la publication de votre projet. Je vous recommande fortement de développer vos References, de sélectionner toutes les références, d’ouvrir le menu des propriétés, puis de définir la propriété Copier Local sur Faux . Si vous ne le faites pas, vos fichiers .dll poseront des problèmes si votre projet wwwroot et votre projet out de wwwroot ne contiennent pas exactement la même version .dll, ce qui pose problème. De plus, je recommande fortement de définir l’action Build Action propriétés dans les deux votre Web.config principal et celui situé dans votre Views à une valeur de None , si vous ne le faites pas. Si vous ne le faites pas, vous vous retrouverez avec des erreurs de compilation.

0
Versatile