Membership Provider产生意外的SQL错误

时间:2012-08-14 02:39:12

标签: asp.net impersonation sqlmembershipprovider

在特定页面上调用Membership.GetUser()时出现以下错误(网站上的第一页,以便我们实施适当的安全控制)

System.Data.SqlClient.SqlException(0x80131904):用户'IIS APPPOOL \ UAT SITE'登录失败。在 .... 在System.Web.Security.SqlMembershipProvider.GetUser(字符串username,布尔userIsOnline)在System.Web.Security.Membership.GetUser(字符串username,布尔userIsOnline)

该站点在IIS Express下正常运行,但UAT在2008R2上的IIS 7.5下

的Web.Config

<authentication mode="Windows" />
    <identity impersonate="True" />
    <authorization>
      <deny users="?" />
      <allow users="*" />
    </authorization>
    <membership>
      <providers>
        <clear />
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="DatabaseGTN" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="GTN" />
      </providers>
    </membership>
    <roleManager enabled="true">
      <providers>
        <clear />
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="DatabaseGTN" applicationName="GTN" />
      </providers>
    </roleManager>

在站点的“身份验证”节点下,仅启用ASP.NET模拟和Windows身份验证 根据服务器管理器安装Web服务器Windows身份验证功能。

网站上的所有其他页面使用相同的连接字符串引用非常愉快地运行,审计日志记录表明SYSTEM SQL中的SYSTEM_USER正在返回正确的用户名COMPANY \ MyName,因此看起来每个其他SQL请求都是模仿预期。

对于我可能忽略的配置选项的任何建议都将非常感激。

我应该更清楚。 我想让模拟正常工作,而不是添加额外的数据库用户或角色。 或者我希望能够告诉我的老板为什么不能这样做。

1 个答案:

答案 0 :(得分:0)

我唯一能想到的,就是看你的错误,就是确保将你的数据库添加到“IIS APPPOOL \ UAT SITE”。

要检查这一点,只需打开Sql Server管理控制台,如果有此用户,请查看安全节点。

在此用户的属性中查看“用户映射”下的内容,看看您的数据库的授权是否正常。