如何修复路径“/”的控制器未找到或未实现 IController
How to fix The controller for path '/' was not found or does not implement IController
我刚刚在我的生产环境中部署了一个新的控制器。由于某种原因,控制器没有被调用。该站点上的所有其他控制器都可以正常工作。这是唯一失败的。我不断得到的是错误:
Error rendering controller BlogListing.GetIndex: Could not create
controller: 'BlogListing'. The controller for path '/' was not found
or does not implement IController
我花了大约 3 个小时来解决这个问题。我有:
- 在控制器中添加了调试代码以查看它是否确实被调用。我的调试语句没有被命中。
- 已验证控制器名称是否正确
- 我正在使用默认的 MVC 路由。
- 考虑到它可能是一个缺失的依赖 dll,我将所有的 dll 从我的生产环境(它不工作的地方)复制到我的本地环境,它就出现了
- 检查文件系统权限,认为无法读取它。
- 我确实看过其他关于类似问题的帖子,但 none 这些解决方案有效或不适用
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。
值得检查 c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\NAMEOFYOURAPP\xxxxx\xxxxxxxx\UserCache\
文件夹中缓存的 MVC-ControllerTypeCache.xml
文件。
如果在那里找不到您的控制器,请删除缓存的 xml 文件并重新启动您的网站。您可以找到更多详细信息 here
我刚刚在我的生产环境中部署了一个新的控制器。由于某种原因,控制器没有被调用。该站点上的所有其他控制器都可以正常工作。这是唯一失败的。我不断得到的是错误:
Error rendering controller BlogListing.GetIndex: Could not create controller: 'BlogListing'. The controller for path '/' was not found or does not implement IController
我花了大约 3 个小时来解决这个问题。我有:
- 在控制器中添加了调试代码以查看它是否确实被调用。我的调试语句没有被命中。
- 已验证控制器名称是否正确
- 我正在使用默认的 MVC 路由。
- 考虑到它可能是一个缺失的依赖 dll,我将所有的 dll 从我的生产环境(它不工作的地方)复制到我的本地环境,它就出现了
- 检查文件系统权限,认为无法读取它。
- 我确实看过其他关于类似问题的帖子,但 none 这些解决方案有效或不适用
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。
值得检查 c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\NAMEOFYOURAPP\xxxxx\xxxxxxxx\UserCache\
文件夹中缓存的 MVC-ControllerTypeCache.xml
文件。
如果在那里找不到您的控制器,请删除缓存的 xml 文件并重新启动您的网站。您可以找到更多详细信息 here