Asp.net mvc 3 ASP.NET MVC 3区域和web.config中的多重身份验证

Asp.net mvc 3 ASP.NET MVC 3区域和web.config中的多重身份验证,asp.net-mvc-3,authentication,asp.net-mvc-3-areas,Asp.net Mvc 3,Authentication,Asp.net Mvc 3 Areas,我一直在尝试关注此博客,以使以下领域发挥作用: 在博客文章中,它标识了每个区域设置身份验证的能力,例如: <location path="Area1"> <system.web> <authentication mode="Windows" /> <authorization> <allow roles="role1,role2"/> <deny users="*"/> </aut

我一直在尝试关注此博客,以使以下领域发挥作用:

在博客文章中,它标识了每个区域设置身份验证的能力,例如:

<location path="Area1">
  <system.web>
  <authentication mode="Windows" />
  <authorization> 
    <allow roles="role1,role2"/>
    <deny users="*"/> 
  </authorization> 
</system.web>
</location>

但是,当我尝试在Visual Studio 2010的新项目中创建此项目时,在运行时出现以下错误:

在应用程序级别之外使用注册为allowDefinition='MachineToApplication'的节是错误的。此错误可能是由于未在IIS中将虚拟目录配置为应用程序造成的

从我看来,这是因为您不能指定身份验证元素,除非它位于顶级web.config中


那么有可能做到博客上所说的吗?您可以在web.config中的Location元素中设置具有身份验证元素的区域吗?

根据我对ASP.NET MVC的了解,设置授权规则时最好将[authorization]属性应用于各个控制器,因为考虑到路由系统的工作方式,这样更安全、更充分。

您好,你找到办法让它工作了吗?请把答案贴在这里好吗?谢谢,我没有按照博客上的建议去做。我的临时解决方案是将web应用程序分成两个项目,每个认证类型一个。虽然我尽可能多地进入了普通项目,但最终还是出现了一些重复的代码和配置,这并不理想。不久之后,由于其他原因,该项目被放弃,因此我从未重新讨论过该问题。这不会改变身份验证机制,只是授权-即,此操作/控制器要求这些角色/用户具有经过身份验证的访问权限