Membership.ValidateUser很慢

3

我正在使用System.Web.Sercurity.Membership方法来处理我们Web服务的用户。在测试期间,当数据库和Web服务驻留在同一服务器上时,我对此非常满意。

当数据库和Web服务被移动到不同的服务器上时,我们在使用Membership.ValidateUser(username, password)命令验证用户时遇到了巨大的延迟。

配置文件详细信息:

type="System.Web.Providers.DefaultMembershipProvider, 
      System.Web.Providers, Version=1.0.0.0, Culture=neutral,    
      PublicKeyToken=*********" 
connectionStringName="BlaBlaConnection" 
enablePasswordRetrieval="false" enablePasswordReset="true" 
RequiresQuestionAndAnswer="false" requiresUniqueEmail="false"       
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6"   
minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" 
applicationName="/"

FYI:新服务器的ping时间比上一个更快。 - Mulvihic
2
Ping时间并不能反映性能,因为它无法测量处理时间。什么是“巨大的延迟”? - Yuck
一个ping并不能反映出数据库响应的速度。请检查其中的差异(也许是数据库服务器设置)。一个ping也不能反映出数据库和Web服务之间连接的速度。当它们在不同的机器上时,情况可能会有所不同(我不知道您的部署设置和连接类型,因此无法做出更多的假设/建议)。您确定问题是会员资格,而不是与部署相关的其他问题吗? - Coral Doe
1
我遇到了完全相同的问题。我使用ANTS Profiler确认了延迟。在这15秒的延迟期间,没有浏览器活动。 - dpant
1个回答

1
问题与数据库权限有关。这篇文章有所帮助:https://elgg.leeds.ac.uk/webteam/weblog/15385.html
我们的数据库管理员将应用程序池标识和域机器标识添加到数据库框和.NET根目录中,授予读写访问权限。
当服务器重新映像时,这些目录的UNC路径不在C:驱动器上,因此它们没有继承“正常”的ACL权限。
当这个问题被纠正后,时间大大缩短了,但是对于我的要求来说还是有点慢(每小时10,000次的Membership.ValidateUser(username, password);Roles.IsUserInRole(username, item.Role)平均需要4秒)。

链接已经失效了。你有其他的参考资料吗? - AndrewRalon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接