1

我有一个 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 management studio 并运行它时,我收到以下错误消息。

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>
4

3 回答 3

1

事实证明这是一个web.config问题。我通过创建一个新的干净web.config文件并从旧的web.config.

于 2009-10-27T16:14:24.813 回答
0

如果将日期更改为 2009-10-10 是否可以正常工作?如果是这样,您有语言/区域设置问题。ASP.NET 在 MM/DD 中​​发送日期参数,而 SQL Server 正在等待 DD/MM,反之亦然。检查 ASP.NET 中的此设置以及您的 SQL Server 登录名。

于 2009-10-27T00:53:33.973 回答
0

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

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

我最初试图深入研究 Membership Provider 存储的过程并开始将所有 DateTime 转移到 DateTime2,但我相信你可以想象打开的蠕虫罐头。无论哪种方式,DateTime 转换问题都是值得了解的。

于 2012-03-01T22:05:19.647 回答