迁移的基于ASP.NET会员的应用程序将无法进行身份验证

时间:2014-01-03 00:59:08

标签: asp.net asp.net-membership membership-provider

我有一个使用Membership提供程序的ASP.NET应用程序。我刚刚将应用程序和相关数据库复制到新服务器,现在我无法登录。我已经确认数据库连接字符串是正确的,并且应用程序可以与数据库通信 - 问题在于某处的成员资格提供程序。

在两台服务器上,应用程序都设置为使用ASP.NET 4.0;旧服务器正在运行IIS 7.0,而新的服务器是IIS 7.5。该应用程序是使用Web Deploy工具复制的,因此它在两台服务器上都是相同的。

在阅读this blog post之后 - 这似乎准确地描述了问题,并指出问题可能是由于applicationName属性在每台服务器上设置不同 - 我检查了旧服务器和新服务器,并且确认配置中的applicationName在两台服务器上都设置为相同的值(“/”) - 这是<membership>下的完整配置条目:

<add name="AspNetSqlMembershipProvider" 
 type="System.Web.Security.SqlMembershipProvider"
 connectionStringName="Default"
 enablePasswordRetrieval="false"
 enablePasswordReset="true"
 requiresQuestionAndAnswer="false"
 requiresUniqueEmail="false"
 maxInvalidPasswordAttempts="5"
 minRequiredPasswordLength="6"
 minRequiredNonalphanumericCharacters="0"
 passwordAttemptWindow="10"
 applicationName="/" />

我还检查了aspnet_Applications表,并且有一条记录,其中ApplicationName ='/'和LoweredApplicationName ='/' - 因此配置文件中的applicationName值得到了尊重。

我的下一个想法是,使用旧服务器的machineKey加密密码,这与新服务器上的machineKey不同。但是,正如您在上面的配置条目中所看到的,passwordFormat键未在config中设置(在任一服务器上)。我找不到任何文档来指示此属性的默认值,但在数据库表aspnet_Membership上,每条记录的PasswordFormat都设置为1,according to this page表示密码已经过哈希处理,未加密

尽管如此,我调查了是否可以将machineKey从一台服务器复制到另一台服务器 - 但旧服务器设置为AutoGenerate,所以我不知道这是否可行。如果是的话,我认为它不会像(AFAIK)那样帮助machineKey不参与散列。

最后一件事 - 处理此问题的应用程序位于另一个应用程序的子文件夹中。我认为没有任何区别,但我想我会提到它。子应用程序未设置为IIS中的应用程序,它只是一个文件夹。

总而言之,我不知道该怎么办。据我所知,应用程序(在两台服务器上)都是对密码进行哈希处理,而不是对它们进行加密,因此它应该可以正常运行。我很感激任何有关检查内容的建议。

0 个答案:

没有答案
相关问题