字典中没有给定的关键字

本文关键字:关键字 字典 | 更新日期: 2023-09-27 18:29:04

我继承了一个项目,该项目在.Net 4.0项目中尝试检索丢失的密码时会给用户带来上述错误。我走了一步,找到了故障点,但问题是,生成的值似乎是正确的,所以我不知道为什么会出现错误。提前感谢任何可以查看以下代码并帮助我找到修复方法的人。如果需要更多信息,请告诉我。我翻遍了所有能找到的东西,但没有任何线索能给我。问题是,我无法跟踪键/值组合应该进入的位置,也不知道如何添加它。代码如下。

我在上发布了类似的讨论http://forums.asp.net/t/1926444.aspx/1?given+key+过去+不是+现在+在+字典里,但那里没有人知道如何帮助我。

void EmailUser(User user)
{
    user.ChangePasswordID = Guid.NewGuid();
    user.Save();
    MailMessage email = new MailMessage();
    //problem line below
    email.From = new MailAddress(Settings.LostPasswordEmailFrom);
    email.To.Add(new MailAddress(uxEmail.Text));
    email.Subject = Settings.LostPasswordSubject;
    email.Body = EmailTemplateService.HtmlMessageBody(EmailTemplates.MembershipPasswordRecovery, new { Body = Settings.LostPasswordText, BeginRequired = "", EndRequired = "", UserName = user.Name, GUID = user.ChangePasswordID.ToString() });
    email.IsBodyHtml = true;
    SmtpClient client = new SmtpClient();
    client.Send(email);
    uxSuccessPH.Visible = true;
    uxQuestionPanel.Visible = false;
    uxUserInfoPanel.Visible = false;
    uxUserNameLabelSuccess.Text = uxEmail.Text;
}
/// <summary>
/// The address that the lost password email will be sent from
/// </summary>
public static string LostPasswordEmailFrom
{
    get
    {
        if (String.IsNullOrEmpty(SiteSettings.GetSettingKeyValuePair()["LA_MembershipProvider_lostPasswordEmailFrom"]))
            return Globals.Settings.FromEmail;
        return SiteSettings.GetSettingKeyValuePair()["LA_MembershipProvider_lostPasswordEmailFrom"];
    }
}

字典中没有给定的关键字

当您调用SiteSettings.GetSettingKeyValuePair()["LA_MembershipProvider_lostPasswordEmailFrom"])时,如果没有名为LA_MembershipProvider_lostPasswordEmailFrom的键,您将得到"字典中不存在给定的键"错误。您可以做的是,首先检查键是否存在,然后获取值。您可以按照以下操作

public static string LostPasswordEmailFrom
{
    get
    { 
        var kvp = SiteSettings.GetSettingKeyValuePair();
        if (kvp == null || !kvp.ContainsKey("LA_MembershipProvider_lostPasswordEmailFrom"))
            return Globals.Settings.FromEmail;
        return kvp["LA_MembershipProvider_lostPasswordEmailFrom"];
    }
}