C# Mvc 4应用程序未拾取区域内容

C# Mvc 4应用程序未拾取区域内容,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我在asp.NETMVC4项目中创建了一个“管理”区域。目前,这个领域只有基本的。 理想情况下,一旦应用程序运行,我希望用户在URL中键入/Admin,并重新定向到Admin索引视图。 但是,当我运行程序时,我得到一个错误,说明“找不到管理员”?? 我是不是在什么地方漏掉了一封推荐信 另外,常规用户登录页面是第一个呈现的视图,我需要绕过该登录页面进入管理部分。 但是,我相信下面这行代码阻止了第二个登录选项 WebSecurity.InitializeDatabaseConnection("Po

我在asp.NETMVC4项目中创建了一个“管理”区域。目前,这个领域只有基本的。 理想情况下,一旦应用程序运行,我希望用户在URL中键入/Admin,并重新定向到Admin索引视图。 但是,当我运行程序时,我得到一个错误,说明“找不到管理员”?? 我是不是在什么地方漏掉了一封推荐信

另外,常规用户登录页面是第一个呈现的视图,我需要绕过该登录页面进入管理部分。 但是,我相信下面这行代码阻止了第二个登录选项

 WebSecurity.InitializeDatabaseConnection("Portal.Model.PortalDBContext","PatientPortalAccount", "PatientID", "Username", autoCreateTables: true);
请记住,我无法更改常规用户表以包含角色。 如果你还没有注意到我还在学习,那么为这个冗长的问题道歉

管理员管理员

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

namespace Portal.Web.Areas.Admin.Controllers
 {
public class AdminController : Controller
{
    //
    // GET: /Admin/Admin/

    public ActionResult Index()
    {
        return View();
    }
带有索引actionResult,其中包含一个视图

 @model Portal.Model.AdminDetails
 @{
ViewBag.Title = "Admin";
Layout = "~/Views/Shared/Login.cshtml";
}
此区域还包含生成的.cs文件AdminAreaRegistration

  using System.Web.Mvc;

  namespace Portal.Web.Areas.Admin
  {
  public class AdminAreaRegistration : AreaRegistration
  {
    public override string AreaName
    {
        get
        {
            return "Admin";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Admin_default",
            "Admin/{controller}/{action}/{id}",
            new { controller = "Admin", action = "Index", id = UrlParameter.Optional },
            new [] { "Admin.Controllers" }
        );
    }
}
}
在Global.asax文件中

  using System;
  using System.Linq;
  using System.Web.Http;
  using System.Web.Mvc;
  using System.Web.Optimization;
  using System.Web.Routing;
  using WebMatrix.WebData;

  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()
    {
        WebSecurity.InitializeDatabaseConnection("Portal.Model.PortalDBContext",             "PatientPortalAccount", "PatientID", "Username", autoCreateTables: true);

        //BOC - Remove Web Forms View Engine
        ViewEngines.Engines.Clear();
        ViewEngines.Engines.Add(new RazorViewEngine());

        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        AuthConfig.RegisterAuth();
    }
}
}

您的路由中有一个名称空间约束:“
Admin.Controllers
”但您的控制器位于名称空间“
Portal.Web.Areas.Admin.Controllers

太好了,这就成功了,谢谢。关于不必登录即可访问管理索引视图的任何提示?我在Global.asax中说的“WebSecurity”标签阻止这样的行为对吗??请理解,我不能将普通用户设置为管理员,因为普通用户表与其他产品同步。@mkell在控制器上添加[Auhorize]属性以强制重定向到登录页我将其添加到公共类AdminController:controller上方,恐怕没有什么区别。在我通过URL访问管理索引视图之前,普通用户仍然必须登录。@mkell好的,我还没有理解您的请求,我仍然不确定。但是,如果您不希望对特定操作进行身份验证,可以在该操作上添加[AllowAnonymous]属性。我可能没有正确解释。当程序运行时,用户将看到一个登录屏幕。此屏幕适用于普通用户。我需要管理员能够在URL中键入“/Admin”,以便重新定向到adminLogin屏幕。常规用户不能是管理员,并且我不能更改常规用户表。现在,重新定向到adminlogin的唯一方法是让普通用户登录,然后在URL中键入“/Admin…”。。。?