Как исправить Контроллер для пути '/' не найден или не реализует IController - PullRequest
0 голосов
/ 11 мая 2019

Я только что развернул новый контроллер в своей производственной среде. По какой-то причине контроллер не вызывается. Все остальные контроллеры на сайте работают нормально. Это единственный, который терпит неудачу. Я получаю сообщение об ошибке «Ошибка рендеринга контроллера BlogListing.GetIndex: не удалось создать контроллер:« BlogListing ». Контроллер для пути« / »не найден или не реализует IController».

Я потратил около 3 часов, пытаясь решить эту проблему. У меня есть:

  1. Добавлен отладочный код в контроллер, чтобы увидеть, действительно ли он вызывается. Мои операторы отладки не попадают.
  2. Проверено правильное имя контроллера
  3. Я использую маршрутизацию MVC по умолчанию.
  4. Думая, что это может быть отсутствующая зависимая dll, я скопировал все dll из моей производственной среды (где она не работает) в мою локальную среду, и она пришла прямо
  5. Проверено разрешение файловой системы, думая, что каким-то образом ее нельзя прочитать.
  6. Я просматривал другие посты, касающиеся подобных проблем, но ни одно из этих решений не работало или не было применимо
namespace Portal.Features.Blog.Controllers
{
using Glass.Mapper.Sc;
using Glass.Mapper.Sc.Web.Mvc;
using Sitecore.Data.Items;
using System;
using System.Linq;
using System.Web.Mvc;
using Portal.Foundation.Blog;
using portal.ct.gov.Models;
using Portal.Features.Blog.Models;
using portal.ct.gov.Business;


    public class BlogListingController : GlassController
    {
        public ActionResult GetIndex(string keyword = "", string page = "", string author = "")
        {
            Sitecore.Diagnostics.Log.Info("Blog Controller found", "portal.ct.gov");
            try
            {

                SitecoreContext scContext = new SitecoreContext();
                Item contextItem = scContext.GetCurrentItem<Item>();
                Item blogHome = null;
                //Get Blog Root

                if (contextItem != null)
                {
                    blogHome = contextItem.Axes.SelectSingleItem("ancestor-or-self::*[@@templatename = 'Blog Section']");
                }
                var sKeyword = !string.IsNullOrEmpty(HttpContext.Request.QueryString[Constants.QueryStrings.SearchKeyword]) ? HttpContext.Request.QueryString[Constants.QueryStrings.SearchKeyword] : string.Empty;
                var blogAuthor = !string.IsNullOrEmpty(HttpContext.Request.QueryString["author"]) ? HttpContext.Request.QueryString["author"] : string.Empty;
                var blogCategory = !string.IsNullOrEmpty(HttpContext.Request.QueryString["category"]) ? HttpContext.Request.QueryString["category"] : string.Empty;
                var blogPage = !string.IsNullOrEmpty(HttpContext.Request.QueryString["page"]) ? HttpContext.Request.QueryString["page"] : "1";
                var model = GetBlogListing(blogHome, sKeyword, blogCategory, blogAuthor, Convert.ToInt32(blogPage));
                return View("/views/blog/BlogResultsMain.cshtml", model);
            }
            catch(Exception ex)
            {
                Sitecore.Diagnostics.Log.Error("Error processing bloglisting-->getINdex " + ex.Message, ex, "portal.ct.gov");
                return View("/views/blog/BlogResultsMain.cshtml");
            }
    }     

}

Любая помощь приветствуется. Обратите внимание, что я использую Sitecore CMS.

1 Ответ

0 голосов
/ 04 июня 2019

Стоит проверить кэшированный файл MVC-ControllerTypeCache.xml в папке c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\NAMEOFYOURAPP\xxxxx\xxxxxxxx\UserCache\.

Если вы не можете найти там свой контроллер, удалите кэшированный XML-файл и перезапустите свой веб-сайт. Подробнее вы можете найти здесь

...