Asp.net mvc ASP.NET MVC 5[授权]属性正在浏览器中生成登录弹出窗口,而不是重定向到302登录页面

Asp.net mvc ASP.NET MVC 5[授权]属性正在浏览器中生成登录弹出窗口,而不是重定向到302登录页面,asp.net-mvc,controller,http-status-code-401,http-status-code-302,authorize-attribute,Asp.net Mvc,Controller,Http Status Code 401,Http Status Code 302,Authorize Attribute,我以前从未见过这种情况:我用一个[Authorize(Roles=“Admin”]属性装饰了一个控制器,但不是通过302重定向将未注册/未签名的用户发送到登录视图,而是在Chrome浏览器中出现一个javascript生成的登录提示: 在输入他或她的凭据后,用户将收到一个401错误。关于SO for和Web.Config中的建议不会改变此行为。我以前使用完全相同的控制器、参考库等创建过另一个项目,从未遇到过这种不希望出现的行为 我现在最大的盲点是是否存在某种OWIN冲突。为了观察我的应用程序在

我以前从未见过这种情况:我用一个
[Authorize(Roles=“Admin”]
属性装饰了一个控制器,但不是通过302重定向将未注册/未签名的用户发送到登录视图,而是在Chrome浏览器中出现一个javascript生成的登录提示:

在输入他或她的凭据后,用户将收到一个401错误。关于SO for和Web.Config中的建议不会改变此行为。我以前使用完全相同的控制器、参考库等创建过另一个项目,从未遇到过这种不希望出现的行为

我现在最大的盲点是是否存在某种OWIN冲突。为了观察我的应用程序在启动时的行为,我在
app.UseCookieAuthentication()
方法中创建了一个测试变量,并设置了一个断点。我在调试期间观察到根本没有调用此方法(请参阅下面的完整代码块):

以下是应返回登录视图的AccountController:

 [AllowAnonymous]
    public ActionResult Login(string returnUrl)
    {
        ViewBag.ReturnUrl = returnUrl;
        return View();
    }
有什么帮助吗

更新:从现在起,我只想拼凑一个自定义授权属性,尽管这对于生产来说是不可取的:

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

namespace PortfolioSite.Framework
{

    public class SiteAuthorizeAttribute : AuthorizeAttribute
    {
        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            base.HandleUnauthorizedRequest(filterContext);

            filterContext.HttpContext.Response.Redirect("/Account/Login");
        }
    }
}

web配置应该覆盖IIS express配置,但在本例中似乎没有覆盖。您可以尝试在IIS级别将其关闭

您可以转到此目录\IISExpress\config\applicationhost.config打开此文件并设置

 <windowsAuthentication enabled="false" />


这是内部网(窗口身份验证)应用程序?不,只是一个通用的MVC 5 Web应用程序。看起来你答案中的最后一句话被打断了。@Kanapolis抱歉,修复了它感谢回复。了解有关修改IIS设置的更多信息总是很好。检查了applicationhost.config,并且
已经设置好了…它在所有浏览器中都会发生吗?发生在IE中。我的环境中没有Firefox安顿。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace PortfolioSite.Framework
{

    public class SiteAuthorizeAttribute : AuthorizeAttribute
    {
        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            base.HandleUnauthorizedRequest(filterContext);

            filterContext.HttpContext.Response.Redirect("/Account/Login");
        }
    }
}
 <windowsAuthentication enabled="false" />