成员资格提供程序产生意外的 SQL 错误

Posted

技术标签:

【中文标题】成员资格提供程序产生意外的 SQL 错误【英文标题】:Membership Provider producing unexpected SQL Error 【发布时间】:2012-08-14 02:39:11 【问题描述】:

在特定页面上调用 Membership.GetUser() 时出现以下错误(网站上的第一页这样做是因为我们实施了适当的安全控制)

System.Data.SqlClient.SqlException (0x80131904):用户 'IIS APPPOOL\UAT SITE' 登录失败。在 …… 在 System.Web.Security.SqlMembershipProvider.GetUser(String username, Boolean userIsOnline) at System.Web.Security.Membership.GetUser(String username, Boolean 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 Server Windows 身份验证功能根据服务器管理器安装。

站点上的所有其他页面都使用相同的连接字符串引用完美地运行,审计日志表明正确的用户名 COMPANY\MyName 正在由 MS SQL 中的 SYSTEM_USER 返回,因此看起来每个其他 SQL 请求都是按预期冒充。

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

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

【问题讨论】:

【参考方案1】:

看到您的错误,我唯一能想到的就是确保已将对您的数据库的访问权限添加到“IIS APPPOOL\UAT SITE”。

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

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

【讨论】:

谢谢。但这与我想要允许的恰恰相反。只有属于特定用户组的用户才被允许访问数据库。它对数以千计的其他数据库调用非常满意,只是不适用于会员提供者正在执行的调用。

以上是关于成员资格提供程序产生意外的 SQL 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据库从 SQL 服务器迁移到 SQL Azure,其中包含带有数据的 asp.net 成员资格提供程序

ASP.Net MVC 2 中自定义成员资格提供程序中的角色分组

部署到 Azure 应用服务时,Asp.net 成员资格提供程序无法连接到本地 SQL Server

SQL网络接口,错误:26 - 错误定位服务器/实例指定[关闭]

自定义成员资格提供程序无法加载文件或程序集

如何为 ASP.NET MVC 2 创建自定义成员资格提供程序?