2011-10-20 126 views
2

我將ASP.NET PasswordRecovery控件與標準成員資格提供程序結合使用。被鎖定的用戶會收到令人困惑的錯誤消息在PasswordRecovery控件中更改鎖定用戶的錯誤消息

我們無法訪問您的信息。請再試一次。

我想改變這個信息,但是找不到辦法。屬性XXXFailureText尤其是GeneralFailureText包含字符串。似乎有一個隱藏的文本用於這種特殊類型的錯誤,我不能使用屬性進行更改。

+0

任何代碼示例??你的asp代碼和控件的屬性? –

+0

你不想要他們。相信我。子類PasswordControl,動態創建的自定義成員資格提供程序,從SqlMembershipProvider派生而來,沒有標記代碼。一切工作正常。只是一條錯誤消息,我無法更改,因爲控件沒有正確的屬性來更改鎖定用戶的錯誤消息。 –

+0

那麼它有點難以排除一些看似簡單的東西,但不會被簡單的解決方案修復......這意味着簡單的問題是不夠的 –

回答

7

這讓我頭痛,直到我嘗試了這個。我將代碼添加到VerifyingUser事件中,以便設置UserNameFaileurText,如果用戶被鎖定並且工作得很好,那就是錯誤消息正是我想要的。

protected void PasswordRecovery1_VerifyingUser(object sender, LoginCancelEventArgs e) 
{ 
    MembershipUser membershipUser = Membership.GetUser(PasswordRecovery1.UserName); 
    if (membershipUser != null && membershipUser.IsLockedOut) 
    { 
     PasswordRecovery1.UserNameFailureText = string.Format("<span style='font-   size:larger'>Your account has been locked. Please contact<br/>your <a href='mailto:[email protected]?subject=Locked Account - {0}'>system administrator</a>.</span>", PasswordRecovery1.UserName); 
    } 
} 
0

在控件的屬性窗口中有一個文本字段顯示您可以您是否使用了自定義的成員提供改變

PasswordRecoveryProperties

+0

我嘗試了三個FailureText屬性,但沒有結果。你是指他們還是其他什麼? –

+0

@dirk你重建解決方案嗎?你也有開發和生產代碼,你可能只是改變開發的代碼,而不是你的現場? –

+0

是的。在提出這個問題之前我嘗試了這個。 –

2

?此錯誤可能是由部分實施的成員資格提供程序造成的。

您還需要檢查您的web.config設置。確保像這樣設置:

enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" 

除了檢查他們的mailsettings/SMTP部分是一個「從」郵件地址設置正確。

<mailSettings> 
    <smtp from="[email protected]"> 
    <network host="mysite.smtp.server" port="25"/> 
    </smtp> 
</mailSettings> 

或設置PasswordRecovery

<asp:PasswordRecovery runat="server"> 
    <MailDefinition From="[email protected]"> 
    </MailDefinition> 
</asp:PasswordRecovery> 

的 '從' 順便說一句,你指定的錯誤消息是默認UserNameFailureTexthttp://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.passwordrecovery.usernamefailuretext.aspx

如果一切都失敗了,你可以劫持事件並取消它們,然後顯示你自己的錯誤信息。特別是UserLookupError和其他錯誤事件。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.passwordrecovery_events.aspx

+0

感謝您的回答,但是...錯誤是由鎖定的用戶造成的,並且存在錯誤不是我的問題。這是正確的行爲。我無法修改的錯誤消息是我的問題 - 對不起,但它不是UserNameFailureText的默認值。處理UserLookupError是解決方法的最後一個選項,但它在密碼恢復之前觸發。如果我使用它,我必須實現部分密碼恢復邏輯來更改錯誤消息。 –

+0

至少要照顧通常的嫌疑人。我想不出任何其他設置可以按照你想要的方式覆蓋它。這可能是會員工作的目標。即不能爲鎖定的用戶嘗試用戶身份驗證。我認爲最好的方法是插入'VerifyingUser'事件並檢查a/c是否被鎖定。然後顯示你需要顯示的任何錯誤信息。 –

相關問題