在特定页面上调用 Membership.GetUser() 时出现以下错误(网站上的第一页这样做,因为我们实施了适当的安全控制)
System.Data.SqlClient.SqlException (0x80131904):用户 'IIS APPPOOL\UAT SITE' 登录失败。在 .... 在 System.Web.Security.SqlMembershipProvider.GetUser(String username, Boolean userIsOnline) 在 System.Web.Security.Membership.GetUser(String username, Boolean userIsOnline)
该站点在 IIS Express 下运行良好,但 UAT 在 2008R2 的 IIS 7.5 下运行
网络配置
<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 身份验证功能。
站点上的所有其他页面都使用相同的连接字符串引用完美地运行,审计日志表明正确的用户名 COMPANY\MyName 正在由 MS SQL 中的 SYSTEM_USER 返回,因此看起来每个其他 SQL 请求都在按预期进行模拟.
对于我可能忽略的配置选项的任何建议将不胜感激。
我应该更清楚地说明这一点。我不想添加额外的数据库用户或角色,而是想让模拟正常工作。或者我想能够告诉我的老板为什么不能这样做。