C# 具有Authorize属性的控制器被调用两次

C# 具有Authorize属性的控制器被调用两次,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我正在测试一个在MVC4中开发的网站,该网站部署在启用Windows身份验证和匿名身份验证的IIS上 我从Fiddler那里测试并确认,如果控制器标记有Authorize属性,那么在我的情况下,控制器会被调用两次 代码片段- [Authorize(Roles = @"BUILTIN\Administrators,SomeAdmins,OtherGroup")] public class AdminController : Controller { // Some code here }

我正在测试一个在MVC4中开发的网站,该网站部署在启用Windows身份验证和匿名身份验证的IIS上

我从Fiddler那里测试并确认,如果控制器标记有Authorize属性,那么在我的情况下,控制器会被调用两次

代码片段-

[Authorize(Roles = @"BUILTIN\Administrators,SomeAdmins,OtherGroup")]
public class AdminController : Controller
{
    // Some code here
}
若我只是不使用Authorize属性,那个么控制器只调用一次。我不知道为什么会有这种奇怪的行为


你能帮我理解原因吗?

我认为这是正常的,因为
Windows授权
是一种基于质询的协议。首先,您将获得
401(未经授权)
代码,浏览器将发送相应的凭据。然而,我认为这是在映射路由和调用控制器操作之前,在浏览器和IIS服务器之间发生的


可以找到更多信息。

“控制器被调用两次”-这到底是什么意思?你是怎么通过Fiddler确认的?你试过调试你的代码吗?试着从第二次调用的位置调试你的代码coming@poke我只是在浏览器中运行网站。费德勒捕捉到了这些请求。它显示对同一页面的两个请求。如果有两个请求,则由浏览器完成。这与控制器在后端某处被“两次”调用无关;当然,如果您发出多个请求,那么每个请求都会访问服务器。第一个请求的HTTP响应是什么?@第一个请求的响应是401-未经授权:由于凭据无效,访问被拒绝。您没有使用您提供的凭据查看此目录或页面的权限。