我有一个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>
答案 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转换问题都是一个很好的了解。