迁移asp.net网站会破坏会员提供商

时间:2009-10-26 21:07:39

标签: asp.net sql-server asp.net-membership sqlmembershipprovider

我有一个asp.net网站是在连接到sql server 2000的.Net Framework v2上开发的。我试图将它迁移到一个新的服务器上,它上面有.Net Framework v3.5和sql server 2008.我备份了数据库并将其恢复到新的数据库服务器。我移动了网站并更新了web.config。但是现在我无法登录该网站。我运行了sql profiler来查看发生了什么,这是我尝试登录时运行的存储过程。

exec dbo.aspnet_Membership_GetPasswordWithFormat @ApplicationName=N'dev',
@UserName=N'AffiliateBob', @UpdateLastLoginActivityDate=1,
@CurrentTimeUtc='2009-10-26 20:43:23.7130000'

注意@CurrentTimeUtc参数的格式。当我把它放到sql管理工作室并运行它时,我收到以下错误信息。

Msg 8114, Level 16, State 1, Procedure aspnet_Membership_GetPasswordWithFormat, Line 0
Error converting data type varchar to datetime.

以下是我的web.config中的会员资格部分。

<membership>
    <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" 
                    type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
                    connectionStringName="LocalSqlServer" 
                    enablePasswordRetrieval="false" 
                    enablePasswordReset="true" 
                    requiresQuestionAndAnswer="false" 
                    requiresUniqueEmail="true" 
                    passwordFormat="Hashed" 
                    maxInvalidPasswordAttempts="999" 
                    minRequiredPasswordLength="6" 
                    minRequiredNonalphanumericCharacters="0" 
                    passwordAttemptWindow="999" 
                    passwordStrengthRegularExpression="" 
                    applicationName="dev"/>
    </providers>
</membership>

3 个答案:

答案 0 :(得分:1)

结果是web.config问题。我通过创建新的干净web.config文件并添加旧版web.config中的部分来解决此问题。

答案 1 :(得分:0)

如果将日期更改为2009-10-10,是否可行?如果是这样,您就会遇到语言/区域设置问题。 ASP.NET以MM / DD发送日期参数,SQL Server期望DD / MM,反之亦然。在ASP.NET中检查此设置以及SQL Server登录。

答案 2 :(得分:0)

在某些情况下,这可能不是最佳解决方案,但最终解决了我的问题:

http://forums.asp.net/t/1398826.aspx/1

我最初试图深入了解成员资格提供程序存储过程并开始将所有DateTime移到DateTime2上,但我相信你可以想象开启的蠕虫病毒。无论哪种方式,DateTime转换问题都是一个很好的了解。