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

dot*_*ame 6 asp.net-mvc iis-7 web-config active-directory asp.net-mvc-3

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

我使用ASP.NET开发服务器运行时工作正常,但在输入凭据后无法超出登录页面并出现以下错误:

配置错误

描述:处理为此请求提供服务所需的配置文件时发生错误.请查看下面的具体错误详细信息并相应地修改配置文件.

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

来源错误:

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>
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感谢,提前感谢.

更新: 到目前为止,经过几次调试后,我认为错误可能来自System.Web.Security.ActiveDirectoryMembershipProviderWeb.xml配置,我添加System.Web(在其中找到该类)作为参考,并且还制作本地副本但仍然是,zip ... :(

Dar*_*rov 6

确保您已通过具有足够权限查询AD的帐户的有效用户名和密码:

<add 
    name="MY_ADMembershipProvider" 
    type="System.Web.Security.ActiveDirectoryMembershipProvider" 
    connectionStringName="ADConnectionString" 
    attributeMapUsername="sAMAccountName" 
    connectionUsername="YOURDOMAIN\SomeAccount"
    connectionPassword="secret"
/>
Run Code Online (Sandbox Code Playgroud)

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

  • 导航到"Internet信息服务(IIS)管理器" - >"应用程序池" - >选择应用程序池 - >右键单击并选择"高级设置" - >"身份" - >"自定义帐户" - >键入具有访问Active Directory权限的AD帐户.最后回收应用程序池以使更改生效. (3认同)

小智 6

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