Controller for path '/ Home' not found or does not implement IController

I searched the internet in high and low condition and checked all previously asked questions with the same heading, and I cannot figure it out.

I return RedirectToAction ("Index", "Home") from the action method in my authentication controller, and then get the following exception:

Server Error in '/' Application. The controller for path '/Home' was not found or does not implement IController. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.Web.HttpException: The controller for path '/Home' was not found or does not implement IController. Source Error: An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. Stack Trace: [HttpException (0x80004005): The controller for path '/Home' was not found or does not implement IController.] System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) +683921 System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) +89 Castle.Proxies.Invocations.IControllerFactory_CreateController.InvokeMethodOnTarget() +155 Castle.DynamicProxy.AbstractInvocation.Proceed() +116 Glimpse.Core.Extensibility.ExecutionTimer.Time(Action action) +85 Glimpse.Core.Extensibility.AlternateMethod.NewImplementation(IAlternateMethodContext context) +186 Castle.DynamicProxy.AbstractInvocation.Proceed() +604 Castle.Proxies.IControllerFactoryProxy.CreateController(RequestContext requestContext, String controllerName) +193 System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) +305 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +87 System.Web.Mvc.ServerExecuteHttpHandlerWrapper.Wrap(Func`1 func) +41 [HttpException (0x80004005): Execution of the child request failed. Please examine the InnerException for more information.] System.Web.Mvc.ServerExecuteHttpHandlerWrapper.Wrap(Func`1 func) +785832 System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage, VirtualPath path, VirtualPath filePath, String physPath, Exception error, String queryStringOverride) +3977 System.Web.HttpServerUtility.Execute(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage) +275 System.Web.HttpServerUtilityWrapper.Execute(IHttpHandler handler, TextWriter writer, Boolean preserveForm) +94 System.Web.Mvc.Html.ChildActionExtensions.ActionHelper(HtmlHelper htmlHelper, String actionName, String controllerName, RouteValueDictionary routeValues, TextWriter textWriter) +700 System.Web.Mvc.Html.ChildActionExtensions.Action(HtmlHelper htmlHelper, String actionName, String controllerName, RouteValueDictionary routeValues) +123 Panoptes.Ui.Web.Views.Home.Index.Execute() in c:\Dropbox\Energy Management System\Application\Panoptes\Panoptes.Ui.Web\obj\CodeGen\Views\Home\Index.cshtml:48 System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +280 System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +126 System.Web.WebPages.StartPage.ExecutePageHierarchy() +143 System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +181 RazorGenerator.Mvc.PrecompiledMvcView.Render(ViewContext viewContext, TextWriter writer) +952 System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +378 Castle.Proxies.AsyncControllerActionInvokerProxy.InvokeActionResult_callback(ControllerContext controllerContext, ActionResult actionResult) +21 Castle.DynamicProxy.AbstractInvocation.Proceed() +116 Glimpse.Core.Extensibility.ExecutionTimer.Time(Action action) +85 Glimpse.Core.Extensibility.AlternateMethod.NewImplementation(IAlternateMethodContext context) +186 Castle.DynamicProxy.AbstractInvocation.Proceed() +604 System.Web.Mvc.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17() +33 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +854172 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +854172 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +265 System.Web.Mvc.Async.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) +838644 System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +28 System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +15 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +65 System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +15 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +51 System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +42 System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +15 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +51 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +606 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288 Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18034 

The authentication controller is as follows:

  public class AuthenticationController : Controller { private ILogService _logService; private IEmailProvider _emailProvider; private IMembershipProvider _membershipProvider; private IAuthenticationProvider _authenicationProvider; public AuthenticationController(ILogService logService, IEmailProvider emailProvider, IMembershipProvider membershipProvider, IAuthenticationProvider authenicationProvider) { _logService = logService; _emailProvider = emailProvider; _membershipProvider = membershipProvider; _authenicationProvider = authenicationProvider; } [AllowAnonymous] [HttpGet] ////[OutputCache(Duration = 3600, VaryByParam = "none")] public ActionResult Index() { return View(); } [AllowAnonymous] [HttpPost] [ValidateHttpAntiForgeryToken] public ActionResult Login(LoginModel model, string returnUrl) { if (Request.IsAuthenticated) { return RedirectToAction("Index", "Home"); } if (ModelState.IsValid) { if (_membershipProvider.ValidateUser(model.Username, model.Password)) { _authenicationProvider.AuthenticateUser(model.Username); ////this.HttpContext.User = new GenericPrincipal(new GenericIdentity(model.Username), null); if (!string.IsNullOrEmpty(returnUrl)) { if (Url.IsLocalUrl(returnUrl)) { return Redirect(returnUrl); } else { _logService.Log(new SecurityException(string.Format("Open redirect to {0} detected (Username {1})", returnUrl, model.Username))); return View("Index", model); } } else { return RedirectToAction("Index", "Home"); } } else { ModelState.AddModelError(string.Empty, Resources.Controller.View.Authentication.Index.IncorrectUsernamePassword); } } return View("Index", model); } [AllowAnonymous] [HttpPost] [ValidateHttpAntiForgeryToken] public ActionResult ForgotPassword(LoginModel model) { if (ModelState.IsValidField("Username")) { if (!_membershipProvider.EnablePasswordRetrieval) { throw new Exception(Resources.Controller.View.Authentication.Index.PasswordRetreivalNotAllowed); } IMembershipUser user = _membershipProvider.FindUsersByName(model.Username).FirstOrDefault(); if (user != null) { try { _emailProvider.Send(ConfigurationHelper.GetSmtpSettings().Smtp.From, user.EmailAddress, Resources.Global.PasswordRecoveryEmailSubject, user.GeneratePasswordRetreivalEmail()); ModelState.AddModelSuccess(Resources.Controller.View.Authentication.Index.PasswordSentViaEmail); } catch (Exception ex) { _logService.Log(ex); ModelState.AddModelError(string.Empty, Resources.Controller.View.Authentication.Index.UnableToRetreivePassword); } } else { ModelState.AddModelError(string.Empty, Resources.Controller.View.Authentication.Index.EmailAddressDoesNotExist); } } ViewBag.ShowForgottenPasswordForm = "true"; return View("Index", model); } [HttpGet] public ActionResult Logout() { _authenicationProvider.Logout(); ModelState.AddModelInformation(Resources.Controller.View.Authentication.Index.Logout); return View("Index"); } } 

My HomeController is as follows:

 public class HomeController : Controller { private IMembershipProvider _membershipProvider; private IAuthenticationProvider _authenticationProvider; public HomeController(IMembershipProvider membershipProvider, IAuthenticationProvider authenticationProvider) { _membershipProvider = membershipProvider; _authenticationProvider = authenticationProvider; } public ActionResult Index() { return View(_membershipProvider.GetCurrentUser()); } } 

See below my RouteConfig:

 public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}", defaults: new { controller = "Authentication", action = "Index" }); } } 

RouteDebugger returns TRUE for routes {controller} / {action} and {* catchall} and confirms AppRelativeCurrentExecutionFilePath as: ~ / Home

I debugged the code, and I can successfully debug and go into the HomeController constructor and index action method. I was also able to enter "~ / Views / Home / Index.cshtml", however it throws an exception in the line of code:

 <span class="username">@Model.UserName</span> 

Oddly enough, before I enter this code, I can add "@ Model.UserName" to my watch list, and I can see the object and its properties very well, but for some reason it throws an exception when entering or exiting this line of code.

If the debugger goes to HomeController, the Index action method and Index view, then why does all this suddenly throw an exception, cannot it find the HomeController for the path "~ / Home"?

The data of the captured violinists can be found at the following link: http://dh.st/IqV

I used the Razor Generator to compile my views, and I also use Ninject.Mvc to solve my controllers. It is also worth mentioning that I cleaned and re-created compiled views, and my project does not contain any registered areas.

Any ideas? this may be simple or obvious, but I'm new to MVC and read / learn when I go.

thanks

+4
source share
1 answer

So, people can see that this question was answered, that’s why it threw an exception and how I fixed it:

An exception was thrown due to the following line of code in the Index HomeController view:

 <a href="@Html.Action("Log Out","Logout", "Authentication")"><i class="icon-key"></i> Log Out</a> 

As you can see, it passes the wrong arguments, and "Exit" is passed as the name of the action, when infact it should be "Exit". I fix it as follows:

 <a href="@Html.Action("Logout", "Authentication")"><i class="icon-key"></i> Log Out</a> 

So, if you get this exception and, like me, you cannot understand why, then please make sure that you check the rest of your code in your view to make sure it is correct. In this case, the framework does not provide messages about the value of the exception and stacktrace.

+6
source

Source: https://habr.com/ru/post/1479772/


All Articles