1

我有一個asp.net網站,開發.Net Framework v2連接到sql server 2000.我試圖將其遷移到一個新的服務器,具有.net Framework v3.5以及sql server 2008.我備份了數據庫並將其恢復到新的數據庫服務器。我移動了網站並更新了web.config。但是現在我無法登錄到網站。我運行sql profiler來查看發生了什麼,這是當我嘗試登錄時運行的存儲過程。遷移asp.net網站休息會員提供

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> 

回答

1

原來是web.config問題。我通過創建一個新的清潔web.config文件並添加舊版web.config中的部分來解決問題。

0

如果將日期更改爲2009-10-10,是否正常工作?如果是這樣,你有一個語言/區域設置問題。 ASP.NET正在以MM/DD發送日期參數,而SQL Server期望DD/MM或相反。在ASP.NET中檢查此設置併爲您的SQL Server登錄。

0

這可能不是在某些情況下,最好的解決辦法,但是這最終解決我的問題:

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

我倒是最初試圖挖掘到成員資格提供存儲的特效,並開始將所有的DateTime到DateTime2的,但我相信你可以想象打開的蠕蟲罐。無論哪種方式,日期時間轉換問題是一個很好的瞭解。