几乎每次我运行我的MVC应用程序时,它都会在到达主页之前因错误而停止。
更新:这是最新的代码:
public class RequireLoggedIn : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (Membership.GetUser() == null)
{
filterContext.Result = new RedirectResult("~/Logon");
}
}
}
public ActionResult Index()
{
MembershipUser myObject = Membership.GetUser();
Guid UserID = (Guid)myObject.ProviderUserKey;
DateTime dateTime = new DateTime();
dateTime = DateTime.Now.AddDays(14);
var model = db.Task.Where(n => (n.UserId == UserID) && (n.Completed == false) && (n.Due < dateTime));
return View(model);
}
为什么这样做?它过去运作良好。
非常感谢任何帮助。
答案 0 :(得分:0)
我会添加一个属性来检查用户是否已登录此示例。您根本不希望该操作可供非经过身份验证的用户使用,因此您无需在操作本身中管理此操作。您可以使用Authorize
执行此操作,而不是以您使用它的形式。
也可以查看这个问题:Is the Authorize attribute in ASP .NET MVC used for Authentication as well as Authorization?
如果您想创建我建议的自定义属性,请创建一个新的 ActionFilterAttribute
public class RequireLoggedIn : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext) {
if (Membership.GetUser() == null) {
filterContext.Result = new RedirectResult("~/Logon");
}
}
}
然后,您可以在整个应用程序中使用此装饰任何操作。简单:)
答案 1 :(得分:0)
根据msdn Membership.GetUser()如果您没有任何人登录则会抛出异常。