4

I want default page of the site to be Login.cshtml. I get the Exception:

Error: The view 'LogIn' or its master was not found or no view engine supports the searched locations. The following locations were searched:

I have 2 areas. Structure is shown below.

enter image description here

My routeconfig is shown below.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace Portal.Web
{
public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "LogIn", id =   UrlParameter.Optional },
            namespaces: new[] { "Portal.Web.Areas.Management" }
        );
    }
    }

}

My global.asax.cs is shown below:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Routing;

namespace Portal.Web
{
// Note: For instructions on enabling IIS6 or IIS7 classic mode, 
// visit http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }
}
}

`Have you any advice?

4 Answers 4

7

You forgot some stuff

Recap:

ManagementAreaRegistration.cs

public class ManagementAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get
        {
            return "Management";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Management_default",
            "Management/{controller}/{action}/{id}",
          new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

RouteConfig.cs

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapRoute(
        "Default" // Route name
        , "{controller}/{action}/{id}" // URL with parameters
        , new { area = "management", controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        , new[] { "Portal.Web.Areas.Management.Controllers" } // Namespace of controllers in root area
    );
}   

You set Portal.Web.Areas.Management when it should be Portal.Web.Areas.Management.Controllers also it is missing the default area: area = "management"

Sign up to request clarification or add additional context in comments.

Comments

1

It looks as though you need to change your namespace on the MapRoute from:

Portal.Web.Areas.Management

To:

Portal.Web.Areas.Management.Controllers

Comments

-1

Clear out your bin folder and rebuild. There is a chance there is an old dll set up with the old routing. This worked for me for one route at least.

Comments

-5

I followed instruction in this post. And problem is resolved. Visit ASP.NET MVC Default URL View

Thank you all.

4 Comments

There is no definitive answer at that url. what did you finally do ? Change defaults: new { controller = "Home", action = "LogIn", id = UrlParameter.Optional } to defaults: new { area = "management", controller = "Home", action = "LogIn", id = UrlParameter.Optional } ?
Without any link to a direct solution this is not worth much to anyone.
I had the same issue and I solved my problem resolving the namespace of my web application. I move my controllers from no area to Admin Area and didn't work, when i adjust the namespace of all class it worked
@renefc3 Why did the namespace have to be changed? Maybe you can help me here -> stackoverflow.com/questions/25450549/…

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.