无法找到该资源。请求的URL:/ Area / Controller / undefined

时间:2014-11-03 02:54:18

标签: c# asp.net asp.net-mvc entity-framework

我收到如下所示的错误。在我的代码执行返回View()或返回重定向到操作之前,我得到了这种错误方式。

我设置了区域。我也在发布区域注册部分,以检查那里是否有任何问题。我检查了文件夹的拼写。一切都运行良好,直到有任何部分通过Entity Framework从数据库获取数据。我真的很困惑是什么导致了这个问题。

  应用程序中的服务器错误。

     

无法找到资源。

     

描述:HTTP 404.您正在查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。

     

请求的网址:/ Admin / Home / undefined

     

版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET>版本:4.0.30319.18408

区域

下的家庭控制器
[HttpGet]
[Authorize]
public ActionResult Show()
{
    return View();
}

public ActionResult Login()
{

    return View();
}

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Login(string rememberMe, string UserName, string Password)
{
    AuthenticateUser Authenticate = new AuthenticateUser();

    if (Authenticate.isUserAuthentic(UserName, Password))
    {
        //the error page is rendered here ..
        //even before reaching the return View portion or Redirect to action

        FormsAuthentication.SetAuthCookie(UserName, false);
        return RedirectToAction("Show");
    }
    else
    {
        return View();
    }
}

DBCONTEXT DB = new DBCONTEXT();

public bool isUserAuthentic(string UserName, string Password)
{
    bool Authentic = false;
    admin_users User = DB.admin_users.SingleOrDefault(u => u.user_name == UserName);

    if (User != null)
    {
        if (User.user_password == Password)
        {
            Authentic = true;

        }
        else
        {
            Authentic = false;
        }
    }
    return Authentic;
}

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 = "Home", action = "Show", id = UrlParameter.Optional },
             namespaces: new[] { "ProjectName.Areas.Admin.Controllers" }
        );
    }
}

如果我还需要分享其他任何内容以便更清楚地解决问题,请告诉我。

1 个答案:

答案 0 :(得分:0)

更改全局asax中的默认路由,因为它正在“Home”控制器中查找不存在的“索引”方法。

更改您的操作属性
 new { controller = "Home", action = "Index", id = UrlParameter.Optional },

如果“登录”是您的默认页面

 new { controller = "Home", action = "Login", id = UrlParameter.Optional },