具有Authorize属性的Controller被调用两次

时间:2015-12-30 12:06:04

标签: c# asp.net-mvc-4

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

我已经测试并确认 Fiddler ,如果控制器标有授权属性,那么在我的情况下控制器会被调用两次。

代码段 -

[Authorize(Roles = @"BUILTIN\Administrators,SomeAdmins,OtherGroup")]
public class AdminController : Controller
{
    // Some code here
}

如果我只是没有授权属性,那么控制器会被调用一次。我不知道为什么这种奇怪的行为。

你能帮助我理解原因吗?

1 个答案:

答案 0 :(得分:1)

我认为这是正常的,因为Windows Authorization是基于挑战的协议。首先,您将获得401 (Unauthorized)代码,浏览器将发送相应的凭据。但是,我认为在映射路由并调用控制器操作之前,浏览器和IIS Sever之间会发生这种情况。

可以找到更多信息here