【问题标题】:How to fix The controller for path '/' was not found or does not implement IController如何修复路径“/”的控制器未找到或未实现 IController
【发布时间】:2019-05-11 13:13:49
【问题描述】:

我刚刚在我的生产环境中部署了一个新控制器。由于某种原因,控制器没有被调用。站点上的所有其他控制器工作正常。这是唯一失败的。我不断得到的是错误:

错误呈现控制器 BlogListing.GetIndex:无法创建 控制器:“博客列表”。找不到路径“/”的控制器 或者不实现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。

【问题讨论】:

  • 我在控制器中没有看到你的动作,这正常吗?
  • 抱歉,我一定是在尝试格式化帖子的代码时删除了它。我编辑了我的帖子并将控制器操作放入其中
  • 你怎么称呼你的行动,你能展示一下吗?
  • 这就是它变得困难的地方,因为它是通过 Sitecore CMS 处理的。我在 sitecore 中指定了一个渲染并从那里点击处理它。我刚刚找到了一个快速的解决方法。我将我的解决方案分为多个项目。我将控制器添加到现有项目中并且它有效。所以那个项目有问题。我认为这是某种依赖

标签: c# model-view-controller sitecore


【解决方案1】:

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

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

【讨论】:

  • 就是这样。有 2 台服务器发生这种情况。我已经多次将控制器部署到这些服务器上,所以我不确定为什么这个特定的控制器会出现问题,但是在删除该文件后,它就开始工作了。
猜你喜欢
  • 2016-11-26
  • 1970-01-01
  • 2012-12-10
  • 2013-05-31
  • 1970-01-01
  • 1970-01-01
  • 2020-07-20
  • 1970-01-01
相关资源
最近更新 更多