如何修复找不到路径'/'的控制器或未实现IController

时间:2019-05-11 13:13:50

标签: c# model-view-controller sitecore

我刚刚在生产环境中部署了一个新控制器。由于某些原因,不会调用控制器。该站点上的所有其他控制器都可以正常工作。这是唯一失败的。我一直得到的错误是“错误呈现控制器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 :(得分:0)

值得检查文件夹MVC-ControllerTypeCache.xml中缓存的c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\NAMEOFYOURAPP\xxxxx\xxxxxxxx\UserCache\文件。

如果在那里找不到控制器,请删除缓存的xml文件并重新启动网站。您可以找到更多here

的详细信息