Ich erstellte eine MVC-Anwendung mit Visual Studio 2013 und ohne Probleme mit unserem Azure AD Tenant verbunden. Plötzlich bekomme ich einen Fehler:Azure AD mit Visual Studio Verletzung der PRIMARY KEY-Einschränkung
Verletzung der PRIMARY KEY-Einschränkung 'PK_dbo.Tenants'. Kann keinen doppelten Schlüssel in Objekt 'dbo.Tenants' einfügen. Der doppelte Schlüsselwert ist (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX). Die Anweisung wurde beendet.
Der Mandantenschlüssel ist die Mandanten-ID unserer Organisation.
Diese Anwendung befindet sich seit über einem Monat ohne Probleme bis heute Morgen.
Der Fehler tritt in dieser Funktion, die erzeugt wurde, wenn die Anwendung erstellt wurde:
public static void RefreshKeys(string metadataLocation)
{
IssuingAuthority issuingAuthority = ValidatingIssuerNameRegistry.GetIssuingAuthority(metadataLocation);
bool newKeys = false;
foreach (string thumbprint in issuingAuthority.Thumbprints)
{
if (!ContainsKey(thumbprint))
{
newKeys = true;
break;
}
}
if (newKeys)
{
using (TenantDbContext context = new TenantDbContext())
{
context.IssuingAuthorityKeys.RemoveRange(context.IssuingAuthorityKeys);
foreach (string thumbprint in issuingAuthority.Thumbprints)
{
context.IssuingAuthorityKeys.Add(new IssuingAuthorityKey { Id = thumbprint });
}
foreach (string issuer in issuingAuthority.Issuers)
{
context.Tenants.Add(new Tenant { Id = issuer.TrimEnd('/').Split('/').Last() });
}
context.SaveChanges();
}
}
}
Danke. Das schien das Problem zu beheben. Irgendeine Idee, warum das zufällig angefangen hätte zu passieren? –
@KevinKulla Der Code ging davon aus, dass die Mandanten-ID immer eindeutig war und niemals wiederverwendet werden würde, da sie immer eine Einfügung in die Tenants-Tabelle vornahm. Dies scheint nicht der Fall zu sein - vielleicht haben Mieter-IDs eine Obergrenze überschritten und werden nun wiederverwendet? –