Asp.net mvc 4 MVC 4覆盖属性不工作

Asp.net mvc 4 MVC 4覆盖属性不工作,asp.net-mvc-4,authorize-attribute,Asp.net Mvc 4,Authorize Attribute,我创建了一个基本的MVC4项目。添加了HomeController和Home\Index.cshtml以及ContactUs.cshtml。 在Global.asax中为ContactUs添加路由 添加文件夹Auth,并在Auth文件夹中添加类Auth.css using System; using System.Web; using System.Web.Http; using System.Net.Http; namespace MvcApplicationTestProject1 {

我创建了一个基本的MVC4项目。添加了HomeController和Home\Index.cshtml以及ContactUs.cshtml。 在Global.asax中为ContactUs添加路由

添加文件夹Auth,并在Auth文件夹中添加类Auth.css

using System;
using System.Web;
using System.Web.Http;
using System.Net.Http;


namespace MvcApplicationTestProject1
{
    public class AuthAttribute : AuthorizeAttribute
    {
        //public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
        //{
        //    HandleUnauthorizedRequest(actionContext);
        //}        

        protected override void HandleUnauthorizedRequest(System.Web.Http.Controllers.HttpActionContext actionContext)
        {
            var response = actionContext.Request.CreateResponse(System.Net.HttpStatusCode.Redirect);
            response.Headers.Add("Location", "http://www.google.com");
            actionContext.Response = response;
        }
        //MVC 4 Web.Http.AuthorizeAttribute has IsAuthorized function but not AuthorizeCore
        protected override bool IsAuthorized(System.Web.Http.Controllers.HttpActionContext actionContext)
        {
            return false;
        }
    }
}
在家庭控制器中

public class HomeController : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
        {
            return View();
        }

        //
        // GET: /Home/  
        [Auth]       
        public ActionResult ContactUs()
        {
            return View();
        }
    }
问题是何时运行代码并访问http://localhost:[此处的端口号]/Home/ContactUs, 它不会影响重写类AuthAttribute


代码有什么问题吗?

您的评论说您正在尝试实现中的功能,但您完全不是从那篇文章中复制代码,而是从以前的SO文章中复制的:那篇文章引用了Web API。在阅读这篇文章时,你会发现不同之处在于你使用了什么属性。您使用的是
System.Web.Http
而不是
System.Web.Mvc

如果您使用了您在评论中提到的代码,那么您会发现它可以工作:

using System.Web;
using System.Web.Mvc;

namespace MvcApplicationTestProject1
{
    public class AuthAttribute : AuthorizeAttribute
    {
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            return false;
        }
    }
}

你想达到什么目标?这并不明显……我正在尝试将[Authorize]自定义为[Auth],并在cotrollers上使用它。这将使我能够灵活地构建自己的身份验证,而不是使用标准成员身份。这就是我试图实现的目标。唯一的区别是它是MVC4,而不是MVC3。谢谢。它现在被触发了。谢谢您的帮助。@user2130167 NP。祝你编程愉快!谢谢你,谢谢你!可笑的是,包括一个不同的名称空间使我指向了错误的mvc4覆盖,它无法“工作”,并且默默地失败。@MikeSmithDev五年后,仍然相关。如果有某种警告就好了。