使用AD的ASP.NET MVC基于表单的身份验证在本地工作,但在服务器(iis7)上失败



我实现了一种基于表单的身份验证,它在ASP MVC 3应用程序中使用AD,遵循我在这里找到的指示ASP.NET MVC-根据Active Directory对用户进行身份验证,但需要输入用户名和密码

当我使用ASP.NET Development Server运行时,我工作得很好,但在输入凭据后无法进入登录页面,并出现以下错误:

配置错误

描述:处理服务此请求所需的配置文件时出错。请查看下面的具体错误详细信息,并适当修改您的配置文件。

分析器错误消息:发生操作错误。

源错误:

Line 37:     <membership defaultProvider="MY_ADMembershipProvider">
Line 38:       <providers>
Line 39:         <add name="MY_ADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider" connectionStringName="ADConnectionString" attributeMapUsername="sAMAccountName" />
Line 40:       </providers>
Line 41:     </membership>

如有任何帮助,我们将不胜感激,提前表示感谢。

更新:到目前为止,经过几次调试,我认为错误可能来自Web.xml配置中的System.Web.Security.ActiveDirectoryMembershipProvider,我添加了System.Web(在其中找到了该类)作为引用,并制作了一个本地副本,但仍然是zip…:(

确保您传递了一个帐户的有效用户名和密码,该帐户具有足够的权限来查询您的AD:

<add 
    name="MY_ADMembershipProvider" 
    type="System.Web.Security.ActiveDirectoryMembershipProvider" 
    connectionStringName="ADConnectionString" 
    attributeMapUsername="sAMAccountName" 
    connectionUsername="YOURDOMAINSomeAccount"
    connectionPassword="secret"
/>

如果您不想这样做,则必须将IIS中的应用程序池配置为在具有足够权限查询Active Directory的帐户下运行。默认情况下,您的应用程序在无法访问AD的本地NetworkService帐户下运行。

我将应用程序池的标识从"ApplicationPoolIdentity"更改为"NetworkService",现在一切都很好。

最新更新